10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 从本手册中摘录

2.11.13重建或修理桌子或索引

本节介绍如何重建或修复表或索引,这可能是:

  • 更改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 

改变表方法

重建一张桌子改变表, 用一个空值改造;也就是说改变表说明变化该表使用它已经存在的存储引擎。例如,如果T1.是一个Innodb.表,使用此语句:

改变表T1引擎= InnoDB;

如果您不确定在哪个存储引擎中指定改变表声明,使用显示创建表显示表定义。

修复表方法

修复表方法仅适用于myisam.档案, 和CSV表。

您可以使用修复表如果表检查操作指示存在损坏或需要升级。例如,修复一个myisam.表,使用此语句:

修复表T1;

mysqlcheck - repair.提供命令行访问权限修复表陈述。这可以是修复表的更方便的手段,因为您可以使用--databases.或者- 所有数据库修复特定数据库或所有数据库中的所有表的选项:

mysqlcheck --repair --databases.db_name.... mysqlcheck --repair -all-alaldases