萬盛學電腦網

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

MySQL errno:145 錯誤解決全攻略:表損壞修復三大方案

錯誤現象

報錯信息:Can't open file: 'xxx.MYI' (errno: 145),通常伴隨 Invalid SQL ... MySQL Error: 1016。

根因: MyISAM 表的索引文件(.MYI)損壞,常見於數據庫文件遷移、非正常關機、磁盤故障等場景。

方案一:命令行修復(適用於有 SSH/遠程桌面權限)

  1. 停止 MySQL 服務:service mysql stop(Windows 用 net stop mysql)。
  2. 進入 MySQL bin 目錄,執行:
    myisamchk -r /path/to/database/*.MYI
  3. 啟動服務驗證。

方案二:SQL 語句修復(適用於僅有 PHP/應用層訪問權限)

在 PHP 或客戶端執行:

REPAIR TABLE `损坏的表名`;

等同於發送 SELECT ... 一樣發送給 MySQL 執行。

方案三:phpMyAdmin 圖形化修復

  1. 登入 phpMyAdmin,選中對應數據庫。
  2. 勾選報錯的表(或全選)。
  3. 下拉選單選擇 「修復表」 執行。

命令行修復示例 phpMyAdmin 修復操作

進階:myisamchk 離線深度修復

# 停止服務後
myisamchk -r /var/lib/mysql/db_name/*.MYI   # Linux
myisamchk -r C:\mysql\data\db_name\*.MYI    # Windows

參數 -r 表示恢復模式;若嚴重損壞可加 -f 強制修復(可能丟失數據)。

預防措施

  • 定期備份(mysqldump 或文件級備份)。
  • 避免在運行時直接複製/移動 .MYD/.MYI 文件。
  • 考慮遷移至 InnoDB(支持崩潰恢復、行級鎖、事務)。
copyright © 萬盛學電腦網 all rights reserved