即使MyISAM表格式非常可靠(SQL語句對錶做的所有改變在語句返回之前被寫下),如果下列任何事件發生,你仍然可以獲得損壞的表:
· mysqld進程在寫中間被殺掉。
· 發生未預期的電腦關機(例如,電腦被關閉)。
· 硬體故障。
· 你可以同時在正被伺服器修改的表上使用外部程式(如myisamchk)。
· MySQL或MyISAM程式碼的軟體缺陷。
一個損壞的表的典型症狀如下:
· 當在從表中選擇資料之時,你得到如下錯誤:
· Incorrect key file for table: '...'. Try to repair it
· 查詢不能在表中找到行或返回不完全的數據。
你可以用CHECK TABLE statement語句來檢查MyISAM表的健康,並用REPAIR TABLE修復一個損壞的MyISAM表。當mysqld不運作之時,你也可以用myisamchk指令檢查或修理一個表格。
如果你的表變得頻繁損壞,你應該試著確定為什麼會這樣的原因。要明白的最重要的事是表變得損壞是不是因為伺服器崩潰的結果。你可以在錯誤日誌中尋找最近的restarted mysqld訊息來早期驗證這個。如果存在這樣一個訊息,則表損壞是伺服器死掉的一個結果是很有可能的。否則,損壞可能在正常操作中發生。這是一個缺陷。你應該試著創建一個展示這個問題的可重複產生的測試案例。