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

MySQL 利用 .frm 文件恢復表結構:InnoDB 與 MyISAM 異路同歸

     編輯:MySQL 資料庫相關知識

背景

建表時生成文件:MyISAM(.MYD 數據、.MYI 索引、.frm 結構),InnoDB(共享表空間 ibdata + .frm)。直接複製 .frm 到別的庫不可直接使用。

InnoDB 表結構恢復(僅結構,數據不可查)

  1. 建臨時庫 tmp,建同名 InnoDB 表(結構任意)
  2. 停庫,用目標 .frm 覆蓋 tmp 庫下同名 .frm
  3. 重啟 MySQL
  4. SHOW CREATE TABLE 可見結構,但 SELECT 會報 Lost connection(因表空間 ID 不匹配)

MyISAM 表結構恢復(結構+數據可用)

  1. 同樣建臨時庫 tmp、同名表
  2. 覆蓋 .frm
  3. 在數據目錄手動建立空的 .MYD、.MYI 文件
  4. 執行 REPAIR TABLE tbl_name USE_FRM;
  5. 驗證:SHOW CREATE TABLE、INSERT、SELECT 均正常

🔑 關鍵差異:MyISAM 文件獨立,REPAIR TABLE USE_FRM 能按 .frm 重建索引/數據文件;InnoDB 依賴共享表空間字典,僅能窺見結構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved