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

MySQL 錯誤「Can't open file: 'xxx.MYI'」完整修復指南

     編輯:MySQL 資料庫相關知識

錯誤成因

Can't open file: 'xxx.MYI' (errno: 145) 為典型 MyISAM 表索引檔損壞。常見原因:非正常關機、斷電、強制終止進程、直接搬移資料檔案。

四種修復方案

方案一:命令列 REPAIR TABLE(需登入權限)

mysql -h host -u user -p
USE db_name;
REPAIR TABLE `table_name`;

REPAIR TABLE 執行畫面

方案二:PHP 腳本執行修復

<?php
$conn = mysqli_connect('host', 'user', 'pass', 'db');
mysqli_query($conn, "REPAIR TABLE `table_name`");
echo mysqli_error($conn);
?>

方案三:phpMyAdmin 圖形介面修復(最簡單)

  1. 進入 phpMyAdmin 選擇資料庫
  2. 勾選損壞的表(或全選)
  3. 下拉選單選擇 修復表

phpMyAdmin 修復表選單

方案四:myisamchk 離線修復(效能最佳,需停機)

# 1. 停止 MySQL 服務
net stop mysql        # Windows
systemctl stop mysqld # Linux

# 2. 進入資料目錄執行修復
# Windows
myisamchk -r "C:\mysql\data\db_name\*.MYI"

# Linux
myisamchk -r /var/lib/mysql/db_name/*.MYI

# 3. 啟動 MySQL
net start mysql
systemctl start mysqld

批次檢查/修復所有資料庫

# 檢查、優化、修復所有資料庫
mysqlcheck -A -o -r -p

# 指定資料庫
mysqlcheck -A -o -r db_name -p

預防措施

  • 設定 UPS 不斷電系統,避免非正常關機
  • 關機前先手動 systemctl stop mysqld 正常關閉
  • 定期備份(mysqldump 或 Percona XtraBackup)
  • 考慮遷移至 InnoDB 引擎(支援崩潰恢復、行級鎖定)
  • 啟用 innodb_force_recovery 緊急讀取模式應對嚴重損壞
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved