2011-04-21 105 views
18

我使用下載並安裝從MySQL 5.5.1.1:http://dev.mysql.com/downloads/導入.FRM和.opt的文件到MySQL

我想導入.FRM和.opt的數據庫文件從我的本地機器到我的MySQL數據庫。

我創建了一個新的數據庫連接來幫助我從我的機器導入文件。但我不能導入.frm文件,因爲我不斷收到錯誤消息:格式不受支持。

有人可以請我幫我介紹如何將文件導入到MySQL客戶端?

謝謝 Ĵ

+1

請您詳細說明一下嗎? .frm文件只是一個數據庫結構描述符。 opt只是整個數據庫選項文件。它們不包含任何數據。當然,它們不能被導入到MySQL客戶端。他們是爲MySQL服務器。 – 2011-04-21 14:23:29

回答

26

據導入任何MySQL數據,三(3)事情需要考慮。

的MyISAM

導入MyISAM表是一個簡單的移動三個文件與擴展.frm.MYD.MYI文件給定的表到MySQL的文件夾。例如,如果表名是MYDATA,然後在三(3)文件

  • mydata.frm
  • mydata.MYD
  • mydata.MYI

以下可能是惡夢的夢魘。導入的InnoDB完全取決於落入兩種類別之一很多因素:

的InnoDB(innodb_file_per_table禁用[默認])

所有InnoDB的數據和索引頁位於/var/lib/mysql/ibdata1。該文件必須從源計算機(Server-S)移動到目標計算機(Server-T)並放置在相同的絕對路徑中。事實上,這裏是令人震驚的:Server-S和Server-T必須相同。換句話說,您不能將InnoDB .ibd文件導入和導出到其他機器。它們只能在創建.ibd的同一臺機器上導入和導出。

您還必須從Server-S移動/ var/ib/mysql/ib_logfile0和/ var/ib/mysql/ib_logfile1,並將它們放在Server-T上的相同絕對路徑中。

您還必須確保來自Server-S的/etc/my.cnf中設置的每個InnoDB變量都必須在Server-T的/etc/my.cnf中設置。

的InnoDB(啓用innodb_file_per_table

對於每一個InnoDB表,將會有兩個文件。例如,如果mydata數據庫中的InnoDB表稱爲mytable,那麼您將擁有/var/lib/mysql/mydata/mytable.frm和/var/lib/mysql/mydata/mytable.ibd。 .ibd文件包含表格的數據和索引頁面。要導入單個表必須

  1. 放置mytable.frm/var/lib/mysql/mydata folder在服務器-T
  2. 放置mytable.ibd/var/lib/mysql/mydata folder在服務器-T
  3. 運行ALTER TABLE mydata.mytable IMPORT TABLESPACE;

確保您有/var/lib/mysql/ibdata1在相同的地方,它是從進口。

故事

的道德,請不要使用在不同的服務器上導入TABLESPACE技術。只需做一切的mysqldump並導入mysqldump。邏輯轉儲總是最安全的方式!

+0

非常感謝你!這真的很有幫助。我瘋了試圖弄清楚。 – JJunior 2011-04-25 05:39:22

+1

「Server-S和Server-T必須是相同的」。意味着在更換系統磁盤時,不可能導入InnoDB frm文件? – Kawu 2012-01-02 15:34:01

+0

我和@Kawu有同樣的問題。 – EnchanterIO 2013-08-05 16:24:10

6

我做了一個使用xampp上的文件的mysql導入。我有很多數據庫,所以我不想通過mysqldump路由。這個過程是:

  1. 安裝新的XAMPP,但不啓用這些服務
  2. 更新的my.ini包括任何自定義設置,我對以前的安裝。
  3. 確認MySQL是成功
  4. 複製開始對所有數據庫文件夾(數據文件夾中)從舊的安裝與mysql的phpMyAdmin的Web認證除外。
  5. 確認MySQL正在啓動成功
  6. 拷貝過來ib_logfile0ib_logfile1ibdata1中。首先重命名文件,不要覆蓋以防萬一出現問題。
  7. 確認MySQL是從數據/ MySQL的成功啓動
  8. 複製在以下文件夾db.frmdb.MYDdb.MYIuser.frmuser.MYD,user.MYI。不要覆蓋新的,以防萬一它不起作用。
  9. 確認MySQL是成功

開始在這個過程中我已經MySQL的完全符合我的所有數據庫和用戶完整工作的結束。

+0

如果在Linux上做,不要忘記設置文件的所有者和組ib_logfile0,ib_logfile1,ibdata1。同樣,也要設置數據庫文件的所有者。 – blvdeer 2014-06-18 00:10:37

0

只是複製所需的「數據」爲目標MySQL數據目錄文件夾,重命名當前的「數據」文件夾,停止mysql服務後之後。並用phpmyadmin導出到sql文件,並恢復當前數據文件夾,並導入所需的數據sql。

0

我想你可能會遇到大問題來自於事實,你甚至不能在phpMyAdmin界面查看這些文件.FRM(因爲他們真的是不完整的套)。我建議你從當前位置刪除這些文件,並使用phpmyadmin在「查詢」選項卡下將這些表重新創建爲SQL [刪除IFF,您確實擁有一切的數據庫腳本。如果不是的話,你仍然可以從舊轉儲中得到這個。如果不是蓋安,不要刪除)。感謝:chagbert。