首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 表損壞通用修復:myisamchk -r/-o 與 CHECK/REPAIR TABLE 兩套方案(含 InnoDB 適用性)

     編輯:MySQL 資料庫相關知識

損壞徵兆(同 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 嘗試導出 → 重建表導入。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved