萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 數據表損壞修復指南:從 phpMyAdmin 到命令行工具

錯誤現象

日志反覆出現:Table 'pre_common_regip' is marked as crashed and should be repaired,約每 20 秒一次,導致服務不可用。

常見損壞原因

  • 高頻讀寫導致索引錯誤。
  • 服務器斷電、進程被殺、磁盤故障等異常中斷。
  • 在 MySQL 服務運行時直接操作數據文件(複製、移動、刪除)。

修復方法

方法一:phpMyAdmin 圖形界面(推薦新手)

  1. 登錄 phpMyAdmin,選中目標數據庫。
  2. 勾選報錯的表,下拉選單選「修復表」。
  3. 執行完成後再執行一次「優化表」。

方法二:命令行 myisamchk(MyISAM 表專用)

# 進入 MySQL 安裝目錄 bin
cd /usr/local/mysql/bin
# 檢查並修復
myisamchk -c -r ../data/db_name/table_name.MYI

無需重啟 MySQL,修復即時生效。

三種修復模式(由快到慢、由輕到重)

myisamchk --recover --quick /path/to/tbl_name   # 輕微損壞,最快
myisamchk --recover /path/to/tbl_name           # 標準修復
myisamchk --safe-recover /path/to/tbl_name      # 嚴重損壞,最慢但最徹底

極端損壞的搶救技巧

索引文件丟失/不可修復

  1. 備份 .MYD 數據文件。
  2. 重啟 MySQL,DELETE FROM tbl_name; 清空表(會生成新 .MYI)。
  3. 停止 MySQL,用備份的 .MYD 覆蓋新文件。
  4. 執行標準修復 myisamchk --recover 重建索引。

表結構文件丟失

  1. 備份 .MYD、.MYI。
  2. 刪除該表所有文件,用原 CREATE TABLE 語句重建表(產生新 .frm)。
  3. 覆蓋回數據與索引文件,執行標準修復。

總結

優先使用 phpMyAdmin 的「檢查→修復→優化」流程,安全直觀;命令行作為備選。定期備份、避免非正常關機是預防關鍵。

copyright © 萬盛學電腦網 all rights reserved