2011-05-04 57 views
9

我試圖通過命令行導入mysqldump文件,但仍然出現錯誤。第1153行的Mysql錯誤:未知的命令''

mysqldump -u XXX -p database_name > database.sql 

然後我嘗試導入該文件以:

mysql -u XXX -p database_name < database.sql 

它加載的一小部分,然後卡住我用甩文件從我的其他服務器。我收到的錯誤是:

ERROR at line 1153: Unknown command '\''. 

我檢查了線路在文件中:

awk '{ if (NR==1153) print $0 }' database.sql >> line1153.sql 

,它恰好是超過1MB大小,只是該行。

任何想法可能會發生在這裏?

回答

17

您的數據庫中有二進制斑點,請嘗試將--hex-blob添加到您的mysqldump語句中。

+1

這工作!非常感謝。 – Chris 2011-05-08 23:02:10

+2

我有同樣的問題,但--hex blob不起作用。其他解決方案? thx – Jon 2012-06-04 14:36:35

3

你知道這是怎麼回事! - 你在你的SQL有一個額外的單引號Ø

如果你有「AWK」,你可能有「六」,這將打開你的line1153.sql文件輕鬆和允許您在數據庫中查找導致問題的值。

或...該行可能很大,因爲它包含多行。您也可以使用--skip-extended-insert選項來mysqldump,以便每行都有單獨的插入語句。

祝你好運。

2

我有同樣的問題,因爲我的數據庫中有中文字符。下面是我從一些中文論壇中找到的,它對我有用。

mysql -u[USERNAME] -p[PASSWORD] --default-character-set=latin1 
[DATABASE_NAME] < [BACKUP_SQL_FILE.sql] 
0

如果一切都失敗了,使用MySQLWorkbench做進口。這爲我解決了同樣的問題。

1

我認爲你需要使用path/to/file.sql代替path\to\file.sql

此外,database < path/to/file.sql並沒有爲我工作由於某種原因 - 我不得不用use database;source path/to/file.sql;

+0

根據這個答案進行測試,證實這是我在MySQL CLI的Windows安裝中使用d:\ path \ to \ file.sql時出現的一系列此類錯誤消息的來源,這些錯誤消息讓我大惑不解,因爲它甚至在設置輸出路徑的tee命令中出現。我懷疑Windows安裝中CLI中指定的任何路徑也是如此。 – 2018-01-23 00:13:21

0

我最近有一個類似的問題,我在Windows機器上做了一個sql轉儲,並試圖將它安裝在Linux機器上。我有一個相當大的SQL文件和我的錯誤是在行3455360.發生我用下面的命令將所有文本複製起來的地步,我得到了一個錯誤:

sed -n '1, 3455359p' < sourcefile.sql > destinationfile.sql

此複製所有的好代碼到目標文件。我查看了目標文件的最後幾行,看到它是一個完整的SQL命令(最後一行以';'結尾),所以我導入了良好的代碼並沒有得到任何錯誤。

然後我看了約20行文件的其餘部分。事實證明,出口可能未完成B/C我看到了下面的PHP代碼的代碼的末尾:

Array 
(
    [type] => 1 
    [message] => Maximum execution time of 300 seconds exceeded 
    [file] => C:\xampp\htdocs\openemr\phpmyadmin\libraries\Util.class.php 
    [line] => 296 
) 

我刪除有問題的PHP代碼,並導入了數據庫的其餘部分。

0

我有特殊字符表的名稱,如_\和它給錯誤,當試圖導入表。 我通過在轉儲的sql中將\更改爲\\來修復它。 其中類似rate_\,我用這個命令我的表名修理轉儲:

sed 's._\\._\\\\.g' dump.sql > dump2.sql 

我並沒有取代所有的反斜線,因爲如果在數據庫中不應該是內容替換一些反斜槓的地方,我不知道。

表名中的特殊字符將在登錄文件名時轉換爲@。 閱讀http://dev.mysql.com/doc/refman/5.5/en/identifier-mapping.html