2011-10-07 48 views
2

我有Windows的.frm文件,現在我使用Ubuntu。我如何才能從.frm文件創建與Windows中相同的表格?我讀過我可以複製粘貼這些文件,但在Ubuntu中,沒有MySQL /數據文件夾,我不知道他們在哪裏存儲MySQL表格和.frm類型文件。謝謝。如何將.frm文件傳輸到表?

回答

2

.frm文件只是包含表格格式,並且是而不是整個表格。您還需要數據文件,這可能是.myd/.myi

一旦你移動這些文件,確保運行mysql_upgrade,以確保你複製的文件將與你正在運行的特定版本的MySQL 100%兼容。

+0

在哪裏可以找到那些.myd/.myi? –

+0

@hey,你找到你的.frm的地方。如果你沒有看到.myd/.myi,那麼你可能沒有使用MyISAM。然後,它取決於您正在使用的存儲引擎。 – Brad

2

等一下!

請記住,.frm文件僅包含表格說明佈局。

如果您擁有所有MyISAM表格,則將相應的.MYD和.MYI文件複製到與.frm相同的文件夾位置就足夠了。 @布拉德在他的回答中已經說明了這一點。 (從我+1他的回答)

現在,如果表是InnoDB,移動.frm將是不夠的。爲什麼?

的InnoDB存儲四個類型在/ var/lib中/ MySQL的/ ibdata1中

  • 數據頁
  • 索引頁
  • 表的元數據
  • MVCC數據

的ibdata1中信息的文件必須按原樣複製到/ var/lib/mysql。您還必須確保將源數據庫服務器的/etc/my.cnf中innodb的所有設置複製到目標數據庫服務器的/etc/my.cnf中。

如果您的數據的任何部分是InnoDB,那麼您最好在所有數據(除information_schema和mysql數據庫外)上執行mysqldump並將其加載到目標計算機上全新安裝的MySQL中。

那麼mysql數據庫呢?有兩種方法移植MySQL的架構,而無需使用mysql_upgrade:

方案1:mk-show-grants(或Percona的工具包的PT-顯示贈款)

此轉儲出所有的MySQL的資助爲SQL語句,這完全是可移植到任何MySQL 5.x實例。

選項2:運行這些命令(我個人什麼MK-顯示贈款的仿真程序)

mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql 

從以下兩種方法的輸出將導致GRANT所有非匿名用戶命令(版本無關)。一旦建立了MySQLUserGrants.sql文件,將其加載到目標數據庫服務器中。

+0

很好的答案!我的+1也是如此。 – Brad