MySQL 8.4 Release Notes
18.2.4.1 MyISAM 表损坏
虽然 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”。