2014年8月7日 星期四

MySQL 解決資料表損壞 【 Table './DatabaseName/Table' is marked as crashed and should be repaired】

今天在 wordpress 站台經過多次不正常關機後在啟動 apache 後,站台出現 HTTP 500,顯示的訊息為「建立資料庫連線時發生錯誤」

 

既然跟資料庫有關係就先從資料庫來查起

 

1. 檢查 AP 與 DB 間的連線正常

2. 帳號密碼 Login 正確

3. MySQL 3306 是否 Listen

 

檢查上述 3項都是OK的,連線的環境應是沒有問題!



 

 

再來進到資料庫檢查是否被塞髒資料或是哪裡有問題
shell# mysql -u user -p database

 

 

##檢查 Table 是否有異常
mysql> SHOW TABLES;

 

#檢查 Table 資料
mysql> SELECT * FROM table;

 

在檢查 Table 這項 Mysql 告知此資料表已損壞
Table './DatabaseName/Table' is marked as crashed and should be repaired

 

可以使用以下 sql 進行修復
mysql> REPAIR TABLE TableName

再次 select 即可正常

 

 

 

myisamchk

網路上也有人使用 myisamchk 來進行修復
shell# myisamchk -r tablename

 

若是修復過程中因執行記憶體超過 Default 值就必須使用 --sort_buffer_size 來指派記憶體
shell# myisamchk -r tablename --sort_buffer_size=2G

 

 

 

 

 

※資料表損壞的狀況使用 mysqldump 也會有相同的錯誤訊息

 

 

參考資料

http://emn178.pixnet.net/blog/post/95064604-%E8%A7%A3%E6%B1%BAtable-'.-dbname-tablename'-is-marked-as-crashed-and-sh

 

Orignal From: MySQL 解決資料表損壞 【 Table './DatabaseName/Table' is marked as crashed and should be repaired】

沒有留言:

張貼留言