• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • MyISAM表损坏

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

    • mysqld的进程在写中间被杀害。
    • 发生计算机意外关机(例如,计算机已关闭)。
    • 硬件故障。
    • 您正在使用外部程序(例如myisamchk)来修改服务器正在同时修改的表。
    • MySQL或MyISAM代码中的软件错误。

    损坏的表的典型症状是:

    • 从表中选择数据时,出现以下错误:

      Incorrect key file for table: '...'. Try to repair it
      
    • 查询找不到表中的行或返回不完整的结果。

    您可以MyISAM使用该CHECK TABLE语句检查表的运行状况,并使用修复损坏的MyISAMREPAIR TABLE。当mysqld未运行时,您也可以使用myisamchk命令检查或修复表。请参见“ CHECK TABLE语句”,“ REPAIR TABLE语句”和“myisamchk-MyISAM表维护实用程序”。

    如果表经常损坏,则应尝试确定为什么会发生这种情况。要知道的最重要的事情是表是否由于服务器崩溃而损坏。您可以通过restarted mysqld在错误日志中查找最近的消息来轻松验证这一点。如果出现这样的消息,则表损坏很可能是服务器死机的结果。否则,可能会在正常操作期间发生损坏。这是一个错误。您应该尝试创建一个可再现的测试用例来演示该问题。请参见第B.4.3.3节“如果MySQL继续崩溃,该怎么办”和“调试和移植MySQL”。