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

MySQL MyISAM表損壞修復完整手冊:從輕量到重建

     編輯:MySQL 資料庫相關知識

損壞典型癥狀

  • tbl_name.frm locked 無法修改
  • Can't find file tbl_name.MYI (Errcode: ###)
  • Unexpected end of file / Record file is crashed
  • 查詢意外中斷、報錯碼135等

修復原則:由輕到重、先備份後操作

鐵律:修復前必須備份(.frm、.MYD、.MYI全複製),防止修復失敗數據歸零。

三級修復策略

第一級:快速安全修復(僅修索引)

myisamchk -r -q tbl_name

-r恢復模式,-q快速模式(僅按索引文件重建,不觸數據文件)。90%輕度損壞即可解決。

第二級:標準修復(重建索引+清理數據)

myisamchk -r tbl_name

去掉-q,允許修改數據文件:刪除錯誤/已刪除記錄,重建索引。耗時較長但更徹底。

第三級:安全恢復模式(老算法、最慢)

myisamchk --safe-recover tbl_name

處理前兩級無法解決的極端情況(如索引文件首16KB壞損),速度最慢但成功率最高。

極端災難:索引文件首塊損壞或丟失

  1. 進入數據庫目錄
  2. 移動.MYD數據文件到安全處
  3. 用DELETE FROM tbl_name重建空表結構(利用.frm生成新.MYI/.MYD)
  4. 將舊.MYD覆蓋新.MYD(保留副本!)
  5. 執行myisamchk -r -q標準修復

終極兜底:從備份恢復

若.frm也損壞,或無備份但記得CREATE TABLE語句:重建表結構→替換數據文件→按上述流程修復。無備份、不記結構=數據永久丟失。

工具選擇

  • MyISAM表(.MYI/.MYD)→ myisamchk
  • ISAM表(舊版,.ISM/.ISD)→ isamchk
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved