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

MySQL 錯誤 145 "Can't open file: 'xxx.MYI'" 完整修復指南與防範措施

     編輯:MySQL 資料庫相關知識

錯誤含義


MySQL Error 1016: Can't open file: 'xxx.MYI' (errno: 145)

索引檔(.MYI)損壞或遺失,資料檔(.MYD)通常完整。

四種修復方案(由易到難)

方案一:命令列 REPAIR TABLE(需遠端桌面/SSH 進入伺服器)


mysql -h host -u user -p
USE dbname;
REPAIR TABLE `tablename`;

命令列修復示例

方案二:PHP 腳本執行 REPAIR(僅有 Web 存取權限)


query("REPAIR TABLE `tablename`");
echo $mysqli->error ? "失敗: ".$mysqli->error : "修復成功";
?>

方案三:phpMyAdmin 圖形介面(最直觀)

  1. 進入 phpMyAdmin,選擇資料庫。
  2. 勾選報錯的表(Can't open file 後的表名)。
  3. 下拉選單選「修復表」。

phpMyAdmin 修復表操作

方案四:myisamchk 離線深度修復(獨佔存取,最徹底)


# 停止 MySQL
systemctl stop mysqld
# 或 Windows: net stop mysql

# 進入資料目錄
cd /var/lib/mysql/dbname

# 標準修復
myisamchk -r *.MYI

# 或指定表
myisamchk -r tablename.MYI

批次修復所有庫表


mysqlcheck -A -o -r -p
# -A: 所有庫, -o: optimize, -r: repair

預防再發生:三大鐵律

  1. 優雅關機:關機前 systemctl stop mysqld,嚴禁強制斷電/強制關機。
  2. UPS 電源:資料庫伺服器必接 UPS,配置自動關機腳本。
  3. 定期備份 + 校驗:每日全備 + Binlog,月度恢復演練。

常見誤區

  • 以為 errno: 145 是權限問題 → 實為索引損壞。
  • 直接刪除 .MYI 期望自動重建 → MySQL 不會自動重建,需 REPAIR TABLE USE_FRM。
  • InnoDB 表出現此錯誤 → InnoDB 不用 .MYI,檢查是否誤判表引擎。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved