以下步骤适用于 MyISAM
表。有关遇到 InnoDB
表损坏时应采取步骤的信息,请参阅 第 1.6 节,“如何报告错误或问题”。
如果您遇到损坏的 MyISAM
表,或者 mysqld 在某些更新语句之后总是失败,您可以通过执行以下操作来测试问题是否可重现
使用 mysqladmin shutdown 停止 MySQL 守护进程。
备份表,以防万一修复操作出现问题(这种情况极不可能发生)。
使用 myisamchk -s database/*.MYI 检查所有表。使用 myisamchk -r database/
table
.MYI 修复任何损坏的表。再次备份表。
如果您需要更多空间,请删除(或移动)MySQL 数据目录中的所有旧日志文件。
启动 mysqld 并启用二进制日志。如果您想找到导致 mysqld 崩溃的语句,您还应该在启动服务器时启用一般查询日志。请参阅 第 7.4.3 节,“一般查询日志” 和 第 7.4.4 节,“二进制日志”。
当您遇到崩溃的表时,停止 mysqld 服务器。
恢复备份。
重新启动 mysqld 服务器,不要启用二进制日志。
使用 mysqlbinlog binary-log-file | mysql 重新执行语句。二进制日志保存在 MySQL 数据库目录中,名称为
hostname-bin.
。NNNNNN
如果表再次损坏,或者您使用上述命令导致 mysqld 崩溃,则说明您找到了一个可重现的错误。按照 第 1.6 节,“如何报告错误或问题” 中的说明,将表和二进制日志 FTP 到我们的错误数据库。如果您是支持客户,您可以使用 MySQL 客户支持中心 (https://www.mysqlserver.cn/support/) 向 MySQL 团队报告问题,以便尽快得到修复。