MyISAM 表易因斷電、強制關機、磁碟壞軌、進程崩潰導致索引檔 (.MYI) 損壞。
Incorrect key file for table: '...'. Try to repair itTable 'tbl' is marked as crashed and should be repairedCan't open file: 'tbl.MYI' (errno: 145)| 工具 | 適用場景 | 指令範例 | 優缺點 |
|---|---|---|---|
| REPAIR TABLE | 輕度損壞、線上修復 | REPAIR TABLE tbl_name; | 簡單、無需停機、嚴重損壞可能失敗 |
| myisamchk | 嚴重損壞、離線深度修復 | myisamchk --recover /path/tbl.MYI | 功能強大、需停服務、無法修復 .frm 損壞 |
| phpMyAdmin | 圖形介面操作 | 點選表 → 操作 → 修復表 | 直觀、底層仍呼叫 REPAIR TABLE |
service mysql stopcd /usr/local/mysql/binmyisamchk /var/lib/mysql/db_name/tbl_name.MYI
myisamchk --recover /var/lib/mysql/db_name/tbl_name.MYI
# 或修復整庫
myisamchk --recover /var/lib/mysql/db_name/*.MYI
service mysql start → CHECK TABLE tbl_name;OK 或 already up to datemyisam_recover_options=FORCE,BACKUP 自動修復備份CHECK TABLE + 備份驗證極端情況: 若
.frm(表定義) 損壞,myisamchk 無能為力。唯一出路:從備份恢復 .frm + .MYD,重建索引。這也是**「備份是最後防線」**的鐵證。