MyISAM 表由 .frm (結構)、.MYD (數據)、.MYI (索引) 三文件組成。索引文件損壞或丟失時,可利用 .frm 重建索引。本文記錄實驗過程、錯誤現象、修復指令與損壞成因分析。
mv message_ignore.MYI message_ignore.MYI.bak # 移除索引文件
/etc/init.d/mysql restart # 重啟服務
ERROR 1017 (HY000): Can't find file: 'message_ignore' (errno: 2)CHECK TABLE 顯示 Corrupt。REPAIR TABLE 普通模式失敗,同樣報 Can't find file。REPAIR TABLE message_ignore USE_FRM;
原理:讀取 .frm 結構定義,重新生成 .MYI 索引文件,數據文件 .MYD 必須完好。
CHECK TABLE message_ignore; -- 顯示 OK
SELECT * FROM message_ignore LIMIT 1; -- 正常查詢
.frm。.frm。CREATE TABLE ... 產生新 .frm,再 REPAIR TABLE ... USE_FRM。mysqld 進程在寫入中被 kill -9 強制終止。myisamchk) 在服務器運行時修改表文件。CHECK TABLE、myisamchk -r 離線維護、備份前 FLUSH TABLES WITH READ LOCK。myisam_recover_options=BACKUP,FORCE 啟動時自動檢查修復並備份舊文件。