以下步骤适用于 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 团队报告问题,以便尽快解决。