2012-01-12 108 views
96

我正在修復這個表,突然服務器被絞死,當我返回時,所有的表都可以,但這個顯示'正在使用',當我嘗試修復它doesn不會繼續。mysql表被標記爲崩潰,最後(自動?)修復失敗

ERROR 144 - Table './extas_d47727/xzclf_ads' is marked as crashed and last (automatic?) repair failed 

我該怎麼做才能修復它?

+0

我已經看到這種情況主要發生在底層文件系統退出空閒inode時。用df -hi檢查。通常有些東西會填滿大量小文件,例如沒有得到清理的php會話文件。 – Zrin 2014-10-21 10:24:08

回答

189

如果您的MySQL進程正在運行,請停止它。在Debian上:

sudo service mysql stop 

轉到您的數據文件夾。在Debian:

cd /var/lib/mysql/$DATABASE_NAME 

嘗試運行:

myisamchk -r $TABLE_NAME 

如果不工作,你可以嘗試:

myisamchk -r -v -f $TABLE_NAME 

您可以再次啓動MySQL服務器。在Debian:

sudo service mysql start 
+1

我試過上面的命令我得到這個錯誤 無法創建新的臨時文件:'xzclf_ads.TMD' – GoodtheBesT 2012-01-12 23:26:34

+1

請嘗試從我更新的答案中的其他選項。 – 2012-01-12 23:28:16

+0

謝謝我試過它似乎工作,但停止給這個錯誤? (等待一個人釋放空間......)(在釋放磁盤空間後,服務器將繼續延遲60秒) myisamchk:重試在60秒內傳送消息在600秒內「 – GoodtheBesT 2012-01-12 23:32:14

12

如果它給你的權限拒絕,而移動到/ var/lib中/ MySQL的然後採用如下方案

$ cd /var/lib/ 
$ sudo -u mysql myisamchk -r -v -f mysql/<DB_NAME>/<TABLE_NAME> 
80

嘗試運行以下查詢:

repair table <table_name>; 

我有同樣的問題,它解決了我的問題。

+4

簡單和完美的解決方案:) – 2014-12-18 06:22:07

+1

完美的解決方案解決了我的問題... – SINGH 2015-04-06 04:23:06

+3

救星!最簡單的方法來解決它+1 – JohnA10 2015-09-02 13:44:45

3

轉到data_dir並在修復<Your_table>表後刪除Your_table.TMP文件。

+0

'data_dir'在哪裏? – CMCDragonkai 2015-05-07 04:54:28

+0

使用此命令搜索它'grep -r datadir/etc/mysql /'。在debian和ubuntu下應該是'/ var/lib/mysql'。 – ThorstenS 2016-02-10 06:30:32

3

我得到了myisamchk: error: myisam_sort_buffer_size is too small作爲錯誤。

解決方案

myisamchk -r -v mysql/<DB_NAME>/<TABLE_NAME> --sort_buffer_size=2G 
1

我需要USE_FRM添加到修理聲明,使其工作。

REPAIR TABLE <table_name> USE_FRM;