MySQL 8.3 Release Notes
尽管 MyISAM
表格式非常可靠(所有通过 SQL 语句对表的更改都将在语句返回之前写入),您仍然可能会遇到损坏的表,如果以下任何事件发生:
损坏表的典型症状是:
-
您在从表中选择数据时遇到以下错误:
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”。