解決 Table './dbname/tablename' is marked as crashed and should be repaired when using LOCK TABLES
問題
資料庫存取發生錯誤,例如使用 mysqldump
時出現:
1 | mysqldump: Got error: 145: Table './dbname/tablename' is marked as crashed and should be repaired when using LOCK TABLES |
原因
資料表的相關檔案由於不明原因發生損壞,而無法正常存取。
解決方案
可以使用以下兩種方式嘗試修復資料表:
使用 SQL 語句
1 | REPAIR TABLE tablename |
使用 myisamchk
使用命令列進入資料表所在目錄,例如
1 | cd /var/lib/mysql/dbname |
執行
1 | myisamchk -r tablename |
執行過程中可能會遇到以下錯誤
1 | myisamchk: error: myisam_sort_buffer_size is too small |
這是修復過程中所需記憶體空間超過預設的空間,可以利用 --sort_buffer_size
參數指派更大的記憶體,例如:
1 | myisamchk -r tablename --sort_buffer_size=2G |
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 小殘的程式光廊!
Comment