Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Making a Test Case If You Experience Table Corruption

7.9.1.7 如果您遇到表损坏,制作测试用例

以下过程适用于 MyISAM 表。如果您遇到 InnoDB 表损坏,见 第 1.5 节,“如何报告错误或问题”

如果您遇到损坏的 MyISAM 表,或者如果 mysqld 在某些更新语句后总是失败,您可以通过以下步骤来测试问题是否可重现:

  1. 使用 mysqladmin shutdown 停止 MySQL 守护进程。

  2. 备份表,以防止修复过程中出现问题。

  3. 使用 myisamchk -s database/*.MYI 检查所有表。使用 myisamchk -r database/table.MYI 修复损坏的表。

  4. 备份表的第二份副本。

  5. 从 MySQL 数据目录中删除(或移动)旧日志文件,以释放更多空间。

  6. 使用启用二进制日志的 mysqld 启动服务器。如果您想找到崩溃 mysqld 的语句,您应该启用通用查询日志。见 第 7.4.3 节,“通用查询日志”第 7.4.4 节,“二进制日志”

  7. 当您获得崩溃的表时,停止 mysqld 服务器。

  8. 恢复备份。

  9. 重新启动 mysqld 服务器 启用二进制日志。

  10. 使用 mysqlbinlog binary-log-file | mysql 重新执行语句。二进制日志文件保存在 MySQL 数据库目录中,名称为 hostname-bin.NNNNNN

  11. 如果表再次损坏或您可以使用上述命令使 mysqld 崩溃,您已经找到一个可重现的错误。使用 第 1.5 节,“如何报告错误或问题” 中的说明将表和二进制日志文件上传到我们的错误数据库中。如果您是支持客户,可以使用 MySQL 客户支持中心 (https://www.mysql.com/support/) 报告问题并尽快修复。