ALTER DATABASE [dvbbs] SET SINGLE_USER;
DBCC CHECKDB('dvbbs', REPAIR_ALLOW_DATA_LOSS) WITH TABLOCK;
ALTER DATABASE [dvbbs] SET MULTI_USER;
⚠ REPAIR_ALLOW_DATA_LOSS 可能導致資料遺失,務必先備份。
phpMyAdmin 修復導致資料遺失後,使用 myisamchk 成功恢復:
# 進入資料目錄
cd /var/lib/mysql/dvbbs
# 修復並排序索引
myisamchk -r -B pw_posts.MYI
# 輸出示例
- recovering (with sort) MyISAM-table 'pw_posts.MYI'
Data records: 1
- Fixing index 1 ... Fixing index 6
Data records: 259889
-r:恢復模式(修復)-B / --sort-recover:建立臨時排序檔案加速索引重建-q:快速修復(僅修復索引樹,不檢查資料)-f:強制覆蓋舊臨時檔InnoDB 有崩潰恢復機制,通常自動修復。若嚴重損壞:
innodb_force_recovery = 1..6 由低到高嘗試啟動導出資料。CREATE TABLE ... LIKE + INSERT SELECT)。CHECK TABLE、ANALYZE TABLE。