本节介绍如何重建或修复表或索引,这可能是:
更改MySQL处理数据类型或字符集的更改。例如,可能已经纠正了排序规则中的错误,需要表重建以更新使用归类的字符列的索引。
所需的表维修或升级报告
检查表
那mysqlcheck., 或者mysql_upgrade.。
重建表的方法包括:
如果您是重建表,因为不同版本的MySQL无法在二进制(就地)升级或降级后无法处理它们,则必须使用Dump-and Reload方法。转储表格前使用原始版本的MySQL升级或降级。然后重新加载表格后升级或降级。
如果仅使用重建表的转储和重新加载方法仅用于重建索引的目的,可以在升级或降级之前或之后执行转储。重新加载仍然必须以后完成。
如果您需要重建Innodb.
表因为A.检查表
操作表示需要表升级,使用mysqldump.创建转储文件和mysql.重新加载文件。如果是检查表
操作表明存在损坏或原因Innodb.
失败,参考第15.21.2节“迫使InnoDB Recovery”有关使用的信息Innodb_Force_Recovery.
重启选项Innodb.
。要了解问题的类型检查表
可能会遇到,参考Innodb.
笔记第13.7.3.2节“检查表陈述”。
通过倾倒和重新加载它来重建表,使用mysqldump.创建转储文件和mysql.要重新加载文件:
mysqldump.db_name.t1> dump.sql mysqldb_name.
要重建单个数据库中的所有表,请在没有任何以下表名的情况下指定数据库名称:
mysqldump.db_name.> dump.sql mysql.db_name.
要重建所有数据库中的所有表,请使用- 所有数据库
选项:
mysqldump --all-databases> dump.sql mysql
这修复表
方法仅适用于myisam.
那档案
, 和CSV
表。
您可以使用修复表
如果表检查操作指示存在损坏或需要升级。例如,修复一个myisam.
表,使用此语句:
修复表T1;
mysqlcheck - repair.提供命令行访问权限修复表
陈述。这可以是修复表的更方便的手段,因为您可以使用--databases.
或者- 所有数据库
修复特定数据库或所有数据库中的所有表的选项:
mysqlcheck --repair --databases.db_name.... mysqlcheck --repair -all-alaldases