2011-05-04 58 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