2012-03-21 24 views
1

恢復存儲過程在shell命令提示符(備份和恢復DB):ERROR 1115時從MySQL轉儲文件

mysqldump -u"username" -p"password" --host="127.0.0.1" --port=3306 --routines --triggers --no-data --add-locks my_db_schema > "C:\dumpfile.sql" 
mysqladmin -u"username" -p"password" --host="127.0.0.1" --port=3306 --force DROP my_db_schema 
mysqladmin -u"username" -p"password" --host="127.0.0.1" --port=3306 CREATE my_db_schema 
mysql -u"username" -p"password" --host="127.0.0.1" --port=3306 --force my_db_schema < "C:\dumpfile.sql" 

在最後的命令,我得到一個錯誤:

ERROR 1115 (42000) at line xxxx: Unknown character set: 'latin1BEGIN'

線XXXX在C:\ dumpfile.sql(第一個存儲過程中的文件):

delimiter varchar(255)) RETURNS text CHARSET latin1 
BEGIN 

如何解決這個錯誤?

我使用的是Windows和MariaDB的,如果有什麼差別


如果我添加latin1BEGIN之間的一個額外的回車腳本運行正常。這似乎是整個劇本中唯一有問題的路線。仍在尋找解決這個問題的方法。

+0

*在此期間,我將以編程方式在運行腳本之前在每個「BEGIN」之前添加一個回車符,但對我來說這看起來像是一個可怕的黑客。* – JohnB 2012-03-22 15:23:54

+2

我猜dump文件在unix文本格式(只有'\ n'),並且你在Windoze中導入它,它需要'\ r \ n'。 – 2012-03-22 15:43:31

+0

Marc B:謝謝。實際上,在那一行的末尾,只有一個'\ r'。不是'\ r \ n'甚至是'\ n'。 **必須是Windows版本的錯誤** *如果您將您的評論作爲答案,我會檢查它。* – JohnB 2012-03-22 18:03:53

回答

2

我猜轉儲​​文件是unix文本格式(僅限\n),並且您將其導入到Windoze中,該文件預計爲\r\n

\r - 如果我記得沒錯,只適用於一個以Mac風格爲結尾的行。

+0

+1:在該行的末尾,只有一個'\ r'。不是'\ r \ n'甚至是'\ n'。 *必須是Windows版本的錯誤。* – JohnB 2012-03-22 18:05:38

+0

\ r是相當老的(pre-OSX)Mac行末。你是如何製作該文件的? – 2012-04-13 01:29:42