# 16.2.4.1 损坏的 MyISAM 表
尽管MyISAM
表格式非常可靠(SQL 语句对表的所有更改都在语句返回之前写入),如果发生以下任何事件,您仍然可以得到损坏的表:
这mysqld进程在写入过程中被杀死。
发生意外的计算机关闭(例如,计算机已关闭)。
硬件故障。
您正在使用外部程序(例如迈萨姆奇克) 来修改同时被服务器修改的表。
MySQL 中的软件错误或
MyISAM
代码。损坏表的典型症状是:
从表中选择数据时出现以下错误:
Incorrect key file for table: '...'. Try to repair it
查询不会在表中找到行或返回不完整的结果。
你可以检查一个健康
MyISAM
表使用检查表
声明,并修复损坏的MyISAM
表与维修台
.什么时候mysqld没有运行,你也可以检查或修复一个表迈萨姆奇克命令。看第 13.7.3.2 节,“CHECK TABLE 语句”,第 13.7.3.5 节,“REPAIR TABLE 语句”, 和第 4.6.4 节,“myisamchk - MyISAM 表维护实用程序”.如果您的表经常损坏,您应该尝试确定发生这种情况的原因。要知道的最重要的事情是表是否由于意外的服务器退出而损坏。您可以通过查找最近的
重启mysqld
错误日志中的消息。如果有这样的消息,很可能表损坏是服务器死机的结果。否则,可能在正常操作期间发生损坏。这是一个错误。您应该尝试创建一个可重现的测试用例来演示该问题。看第 B.3.3.3 节,“如果 MySQL 不断崩溃怎么办”, 和第 5.9 节,“调试 MySQL”.