MySQL:错误排序规则“正在使用”并且无法加载表
Posted
技术标签:
【中文标题】MySQL:错误排序规则“正在使用”并且无法加载表【英文标题】:MySQL: error collation "in use" and table could not be loaded 【发布时间】:2016-06-18 14:03:52 【问题描述】:我的VPS
已安装cPanel
。今天突然不行了,VPS
上的所有Wordpress
网站都显示错误:
This webpage has a redirect loop
ERR_TOO_MANY_REDIRECTS
并自动重定向到wp-admin/install.php
。
我登录到 phpmyadmin,然后看到一些表有 collation "in use"(不是 "utf8_general_ci" 像通常那样)。错误无法加载:
#1286 - Unknown storage engine 'InnoDB'".
那么如何解决这个错误呢? 谢谢你的帮助!
【问题讨论】:
1.您的帖子中没有问题,只是一系列错误。 2. 如果昨天一切正常,而今天不再工作,那么您可能应该询问您的提供商/系统管理员他们对您的站点做了什么。 对不起,我的英语不好。但这是我的 VPS,所以提供商不支持。我自己安装的。现在上面有一些错误,但我不知道如何修复它。感谢您的帮助! 【参考方案1】:我遇到了同样的问题,这个问题是因为您的 innoDB 已损坏,并且您使用 innoDB 表的所有数据库都显示正在使用中。
要解决此问题,您需要按照以下步骤操作
要获得 100% 干净的表空间,您需要使用 innodb_force_recovery=4 启动 mysql,使用 mysqldump 并在新的 InnoDB 实例上恢复它(我的意思是您必须删除 ibdata1 和所有数据库目录)。
更新:
此时 MySQL 以 innodb_force_recovery=x (x != 0) 启动
转储所有数据库:
mysqldump --skip-lock-tables -A > alldb.sql
检查 MySQL 保存文件的位置(在我的例子中是 /var/lib/mysql/):
mysql -NBe "SELECT @@datadir"
/var/lib/mysql/ 停止 MySQL
mysqladmin 关闭
将旧的 MySQL 文件移动到安全的地方
mv /var/lib/mysql /var/lib/mysql.old
新建系统数据库
mkdir /var/lib/mysql
mysql_install_db
启动 MySQL
/etc/init.d/mysql启动
恢复转储
mysql
如果数据库很大,恢复可能需要很长时间。
在这种情况下,另一个技巧可能会奏效。在每个 InnoDB 表上运行 ALTER TABLE ... ENGINE INNODB。它将重建所有 InnoDB 索引,因此错误将消失。
++++++++++++++++++++++++++++++++++++++++++++++++++ ++
另一个解决方案是从备份中恢复数据库。
为此,您首先需要删除 ibdata1 文件
cd /var/lib/mysql
rm -f ibdata1
然后使用以下命令一一恢复所有数据库
mysql -u 用户名 -p 数据库名 ++++++++++++++++++++++++++++++++++++++++++++++++++ +++
【讨论】:
第一个 cmd mysqldump --skip-lock-tables -A > alldb.sql 显示错误:Could't execute 'show fields from 'wp_1_department_hours'': Can't create/write to file '/tmp/#sql_2128_0.MYI'(错误代码:13)。有什么错误,我该如何解决?感谢您的帮助! 你有数据库备份吗?以上是关于MySQL:错误排序规则“正在使用”并且无法加载表的主要内容,如果未能解决你的问题,请参考以下文章
mysql 字符集 utf 8 排序规则(dup 键)无法正常工作
MySQL - 错误 1071 阻止更改字符集/排序规则,“指定的键太长......”