Can't open file: 'xxx.MYI' (errno: 145) 為典型 MyISAM 表索引檔損壞。常見原因:非正常關機、斷電、強制終止進程、直接搬移資料檔案。
mysql -h host -u user -p
USE db_name;
REPAIR TABLE `table_name`;

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

# 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
systemctl stop mysqld 正常關閉mysqldump 或 Percona XtraBackup)innodb_force_recovery 緊急讀取模式應對嚴重損壞