相关的文档10bet官方网站 本手册下载 本手册节选

16.2.4.1 MyISAM表损坏

即使MyISAM表格式非常可靠(SQL语句对表的所有更改都是在语句返回之前写入的),如果发生以下任何事件,您仍然可以得到损坏的表:

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

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

  • 硬件故障。

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

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

损坏表的典型症状有:

  • 在从表中选择数据时,您会得到以下错误:

    表的密钥文件不正确:“…”。试着修复它
  • 查询不会在表中查找行或返回不完整的结果。

您可以检查的运行状况MyISAM表的使用检查表语句,并修复已损坏的MyISAM修理表.当mysqld是不是在运行,还可以用表检查或修理myisamchk命令。看到第13.7.3.2节,“CHECK TABLE语句”第13.7.3.5节,“REPAIR TABLE语句”,章节4.6.4,“myisamchk - MyISAM表维护工具”

如果您的表经常损坏,您应该尝试确定发生这种情况的原因。最重要的是要知道表是否由于意外的服务器退出而损坏。你可以很容易地通过寻找最近的重启mysqld错误日志中的消息。如果有这样的消息,表损坏很可能是服务器死亡的结果。否则,在正常操作过程中可能会发生损坏。这是一个bug。您应该尝试创建一个可重复的测试用例来演示问题。看到B.3.3.3节“如果MySQL一直崩溃怎么办”,第5.9节,“调试MySQL”