相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  损坏的 MyISAM 表

18.2.4.1 损坏的 MyISAM 表

即使 MyISAM 表格式非常可靠(由 SQL 语句对表的更改在语句返回之前就已写入),如果发生以下任何事件,您仍然可能遇到损坏的表

  • mysqld 进程在写入过程中被终止。

  • 发生意外的计算机关机(例如,计算机被关闭)。

  • 硬件故障。

  • 您正在使用外部程序(例如 myisamchk)来修改正在被服务器同时修改的表。

  • MySQL 或 MyISAM 代码中的软件错误。

损坏表的典型症状包括

  • 在从表中选择数据时出现以下错误

    Incorrect key file for table: '...'. Try to repair it
  • 查询在表中找不到行或返回不完整的结果。

您可以使用 CHECK TABLE 语句检查 MyISAM 表的健康状况,并使用 REPAIR TABLE 修复损坏的 MyISAM 表。当 mysqld 未运行时,您也可以使用 myisamchk 命令检查或修复表。请参见 第 15.7.3.2 节,“CHECK TABLE 语句”第 15.7.3.5 节,“REPAIR TABLE 语句”第 6.6.4 节,“myisamchk — MyISAM 表维护实用程序”

如果您的表经常损坏,您应该尝试确定其原因。最重要的是要知道表是否由于意外的服务器退出而损坏。您可以通过查看错误日志中最近的 restarted mysqld 消息轻松地验证这一点。如果有这样的消息,则表损坏可能是由于服务器崩溃造成的。否则,损坏可能是在正常操作期间发生的。这是一个错误。您应该尝试创建一个可重现的测试用例来演示问题。请参见 第 B.3.3.3 节,“如果 MySQL 持续崩溃该怎么办”第 7.9 节,“调试 MySQL”