2008-09-18 113 views
11

每隔一段时间,我都会收到一个错误消息,说我的一张桌子“被标记为坠毁,应该修理”。然后我做一个修理表并修理它。是什么导致他们被标记为坠毁,我该如何防止它?我正在使用MySQL 5.0.45的MyISAM表。是什么导致表需要修复?

回答

6

表可能有一些原因被损坏,这在manual中有详细讨论。

为了对付它,下面的东西效果最好:

  1. ,请务必在MySQL的正常关机
  2. 考虑使用--myisam-恢复选项可自动检查/修复表的事件关机没有正确完成
  3. 请确保您使用的是最新版本,因为已知的腐败错误通常是固定的ASAP
  4. 请仔细检查您的硬件是否有问题。诸如sysbenchmemtest86之类的工具通常可以帮助验证事情是否正常工作。
  5. 确保没有外部接触数据的目录,如病毒检查程序,备份程序等...
+0

我之前按照这些步骤,但总是得到损坏的表和数据丢失。然后,我决定把它当作我的答案,并且即使是有大量产品信息的巨大表格,我也没有在两年内遇到任何错误。我向所有人推荐了我的答案。按照这些步骤,晚上睡个好觉 - 不要做噩梦:) – rasputin 2009-11-05 12:10:18

3

通常情况下,数据库没有正常关闭时会发生,如系统崩溃或硬件问题。

3

我用来从MySQL的错误,就像你一样。

我解决我的问题,以这种方式

  1. 全部转换MyISAM表到InnoDB的(你可以搜索“的MyISAM VS InnoDB的”在stackoverflow.com和搜索引擎找出原因)
  2. 为了得到MySQL的最佳性能,使用第三方程序MONYOG (MySQL Monitor and Advisor)并检查性能提示

这两个步骤救了我。我希望这些也能帮助你。