損壞徵兆(同 88377)
- 查詢中斷、.frm 鎖定、找不到 .MYI、檔案意外結束、記錄損壞、處理器錯誤。
方案一:myisamchk(離線、MyISAM 專用)
myisamchk -r tbl_name # 標準修復
myisamchk -o tbl_name # 強力修復(可能遺失資料)
方案二:SQL 指令(線上、MyISAM/InnoDB 通用)
CHECK TABLE tbl_name [, tbl_name] ... [QUICK | FAST | MEDIUM | EXTENDED | CHANGED];
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM];
CHECK TABLE 對 InnoDB 亦有效(檢查索引一致性)。
REPAIR TABLE **僅 MyISAM** 支援;InnoDB 損壞通常需從備份恢復或 innodb_force_recovery。
QUICK 只修索引、EXTENDED 逐行重建、USE_FRM 依結構重建索引。
選擇建議
- MyISAM + 可停機 →
myisamchk -r 最快最徹底。
- MyISAM + 不可停機 →
REPAIR TABLE 線上修復。
- InnoDB 損壞 →
CHECK TABLE 確認 → innodb_force_recovery=1..6 嘗試導出 → 重建表導入。