Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


18.2.4.1 MyISAM 表损坏

虽然 MyISAM 表格式非常可靠(所有由 SQL 语句对表的修改都在语句返回前写入),但是你仍然可以得到损坏的表如果以下事件发生:

  • mysqld 进程在写入中被杀死。

  • 突然的计算机关机(例如,计算机关闭)。

  • 硬件故障。

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

  • MySQL 或 MyISAM 代码中的软件 bug。

损坏表的典型症状是:

  • 你在选择数据时得到以下错误:

    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信息轻松验证。如果存在这样的信息,那么表格损坏很可能是服务器崩溃的结果否则,损坏可能是在正常操作过程中发生的。这是一个bug。您应该尝试创建一个可重现问题的测试用例来证明问题。见第 B.3.3.3 节,“如果 MySQL 总是崩溃”,和第 7.9 节,“调试 MySQL”