2014-01-17 163 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與其內部數據字典進行同步。