-- 1. 登入 MySQL
mysql -u user -p dbname
-- 2. 檢查表
CHECK TABLE tabTest;
-- 3. 若 Status != OK,修復
REPAIR TABLE tabTest;
-- 4. 再次檢查確認
CHECK TABLE tabTest;
phpMyAdmin 介面亦提供「勾選表 → 下拉選『修復表』」圖形化操作。
# 檢查
myisamchk tbl_name.MYI
# 修復(標準)
myisamchk -r -q tbl_name.MYI # 快速:只修索引
myisamchk -r tbl_name.MYI # 標準恢復
myisamchk --safe-recover tbl_name.MYI # 安全模式
# 索引檔遺失
myisamchk --recover --force tbl_name.MYI
關鍵前提:執行期間 MySQL **不可存取該表**,建議 systemctl stop mysqld 或鎖表 FLUSH TABLES tbl_name WITH READ LOCK。
# 僅在 MySQL 未啟動時執行
[ -S /var/lib/mysql/mysql.sock ] || \
myisamchk -r -q /var/lib/mysql/*/*.MYI
/var/lib/mysql/mysql.sock 存在表示 MySQL 正在運行。/var/lib/mysql/mysql.sock,源碼安裝常為 /tmp/mysql.sock。
mysqlcheck -A -c -r -u root -p
# -A: 所有庫, -c: check, -r: repair
CHECK/REPAIR TABLE,無需停機,適合輕度損壞。REPAIR TABLE ... USE_FRM 或 myisamchk。.frm .MYD .MYI。mysqlcheck -A -c 掃描,早發現早處理。