舊環境:Debian + MySQL 5.1 + MyISAM。新環境:Ubuntu + MySQL 5.5/5.6(預設 InnoDB)。需將 /usr/lib/mysql 下數據文件直接遷移。
chown -R mysql:mysql。error.log 顯示各類文件創建/寫入失敗。SHOW ENGINES 也無法查看。結論:跨版本、跨引擎直接拷貝數據目錄不可行。mysqldump -u root -p db_sth > db_sth.sql
報錯:Got error: 1286: Unknown table engine 'InnoDB' when using LOCK TABLES。
USE db_sth; SHOW TABLES;。CHECK TABLE t1; 發現某表報 Unknown table engine 'InnoDB' Corrupt。REPAIR TABLE t1; 同樣報錯。t1.frm 存在,但 t1.MYD、t1.MYI 丟失(MyISAM 三文件缺其二)。myisamchk 亦無法修復。DROP TABLE t1; -- 丟棄損壞表
mysqldump -u root -p db_sth > db_sth.sql -- 重新導出其餘表
該表數據無法恢復,其餘表正常遷移。
SHOW ENGINES 確認目標版本支援源引擎,或提前 ALTER TABLE ... ENGINE=InnoDB 轉換。