2014-01-17 166 views
1

我们有一个网站,有一个税率,某种程度上被损坏的一天。MySQL表损坏

我试着从桌子上选择*,但它几乎花了几个小时才没有任何东西。

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

myisamchk -r theTable.MYI 

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

引擎是MySQL的

这将是很容易复制的表,我可以删除theTable。*(FRM,MYD,MYI)?

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

回答

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与其内部数据字典进行同步。