2013-08-30 152 views
2

我使用this線程的指導原則成功創建了mysqldump文件myDump.sqlmyDb1數據庫。此外,我創建了第二個數據庫myDb2,瀏覽到包含myDump.sql,並試圖將其恢復到新的數據庫myDb2但失敗的目錄中,有兩種方法我試過:無法將MYSQL備份恢復到新的數據庫

> mysql -u root -p myDb2 < myDump.sql; 
> -- entered password 

和:

> mysql -u root -p 
mysql> -- entered password 
mysql> USE myDb2; 
mysql> SOURCE myDump.sql; 

兩者都有同樣的錯誤信息:

ERROR: 
ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in 
non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ' ■-'. 

我也想知道如果我需要使用相同的數據庫名稱作爲舊的分貝爲新的。我嘗試了一個不同的名字,但是有相同的結果錯誤。

+0

嘗試運行'文件myDump.sql',這是什麼打印? (如果你在linux上) – user4035

+0

@ user4035我沒有linux。我使用Windows PowerShell。嘗試運行myDump.sql爲'mysql>源myDump.sql;'我得到'錯誤:無法打開文件'myDump.sql',錯誤:2' –

+0

該文件是一個文本文件?用文本編輯器檢查它。 – user4035

回答

5

這可能是由編碼系統造成的。
我的轉儲文件是在PowerShell中使用重定向生成的(「>」),我遇到了同樣的問題。輸出重定向生成一個UTF-16 Little Endian文件。

但是,這可以通過將轉儲文件轉換爲utf-8來解決。這可以在Emacs中完成的:

M-X設置緩衝文件編碼系統

然後再保存文件並導入。

文件的編碼系統,可以使用GNU「文件」工具進行檢測,並在窗口也可用,並且可以在這裏找到:http://gnuwin32.sourceforge.net/packages/file.htm
對於今後的使用,更好的轉儲命令,如:

mysqldump的<DBNAME> -r <名>

0

檢查myDump.sql文件,它可能是編碼錯誤的文件中。這些垃圾字符導致此問題。刪除垃圾字符以解決問題。

公開賽續集專業表演這個

`í}k¯]ÇÝçðWÜ?øy«««_%c�sè;¶`Ìô hãEE¤"8Áü÷ô>ûqzW¯:êmX0`²¸yyëÔºµë¹êGw?û+þ{ð£»g¯ÿçw¯¿ºû/ß¾¹{ö/ï^}÷§oªô__ûöË7_ß'éÁªà¿¿{÷ÍÇ}ôý÷ßOo/ãoßL_¼ùÓG×?ûâÍ«×Óß¼ùãW¯/òÍGË?`