今天在 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