2012-09-25 50 views
1

我抄我的數據庫文件夾從Windows系統C:/wamp/bin/mysql/mysql.XX/data/database_name到我已連接到通過終端MySQL的Linux系統/var/lib/mysql/database_nameMySQL表複製文件

,執行查詢show tables;它顯示在數據庫中的所有tebles後不存在,但是當我執行select * from table_namedesc table_name時,它顯示錯誤ERROR 1146 (42S02): Table 'database_name.table_name' doesn't exist

任何一個有關於它的主意?

+0

這些文件應該在系統之間兼容,但Linux區分大小寫,但Windows不區分大小寫。 – joocer

+0

所有文件都以小寫字母命名; –

+0

MysqlDB格式可能因Windows而異,所以在linux系統的/etc/my.conf中添加'lower_case_table_names = 0'屬性,這樣可以正常接受你的查詢。 – gks

回答

0

使用mysqldump複製數據庫,不要複製二進制數據文件

當你手動複製二進制文件,一些內部數據可能不一致,例如,一些交易可以沒有完成。

同樣,如果將數據文件到不同的MySQL版本/存儲引擎版本,引擎可能無法在新的/先前版本的格式能夠讀取文件。

另外系統編碼可以是不同的,所以內部數據表示可以是不同的,並且在Windows和Linux完全地不相容。

+0

那不是水管的答案,,以防萬一我的MySQL服務器崩潰..我只有文件,我怎麼能? –

+0

如果你的服務器崩潰了,在我根本不相信的地方,建立_完全相同的服務器版本,並且__完全相同的存儲引擎在__完全相同的OS_上並且執行'mysqlcheck'命令。不要在不同的操作系統上移動二進制數據,並詢問爲什麼它不起作用。 – user1516873

+0

對於這個答案似乎對@ user1516873有點不公平,他提供了一個合適的替代方法,並且你沒有提到任何有關在OP中原始主機不可恢復的內容。建立一個VM並使用mysqldump。 – joocer

2

我有同樣的問題,通過複製備份ibdata1中在/ var/lib中/ MySQL的解決。

我試圖恢復整個數據庫,不知道會不會只用一個表發生什麼。

+0

我的解決辦法只是替代了原來的文件,備份一個短的時間內,運行中mysqladmin,傾我所需要的表,然後再恢復原始文件。 (請記住在覆蓋之前將其備份) – Johny

+0

這有效,注意我在每臺服務器上使用了完全相同的MySQL版本。 – TheLegendaryCopyCoder