MySQL表已损坏

时间:2014-01-17 18:47:36

标签: mysql sql linux

我们有一个网站,其中有一个税率表,有一天会以某种方式损坏。

我尝试从theTable中选择*,但实际上花了好几个小时才产生任何东西。

我试过截断并删除表格。产生与选择相同的结果。 最终行动停止了。所以,我跑了

myisamchk -r theTable.MYI

修复看起来没问题,但我尝试再次从中选择*并仍然产生相同的结果。

引擎是MySQL

重现表格很容易,我可以删除表格。*(frm,MYD,MYI)?

或者,如果有更好的方法来处理我正在做的事情。

1 个答案:

答案 0 :(得分:1)

是的,您可以删除.FRM,.MYD,.MYI文件以删除MyISAM表。这是DROP TABLE时发生的情况。

MyISAM表因腐败而臭名昭着。但是在重新创建表后重复出现问题的事实让我想知道你是否有一个失败的硬盘。值得testing the health of your hard drive

您还应该切换到使用InnoDB而不是MyISAM。 InnoDB有很多防止腐败的保护措施,包括页面校验和,同步磁盘写入,崩溃恢复等.MyISAM正在逐步淘汰,并且没有得到MySQL开发人员的修复。 InnoDB现在是MySQL 5.5(大约2010年)的默认存储引擎,它将继续成为未来发展的重点。

请注意,使用InnoDB,无法简单地删除文件,以便像使用MyISAM一样删除表格。您必须使用DROP TABLE,以便InnoDB将该drop与其内部数据字典同步。