第1153行的Mysql错误:未知命令'\'

时间:2011-05-04 19:07:08

标签: mysql mysqldump

我试图通过命令行导入mysqldump文件,但继续收到错误。我使用以下命令从我的其他服务器转储文件:

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,仅用于该行。

任何想法可能会在这里发生什么?

7 个答案:

答案 0 :(得分:18)

您的数据库中有二进制blob,请尝试将--hex-blob添加到mysqldump语句中。

答案 1 :(得分:3)

你知道发生了什么 - 你的SQL中有一个额外的单引号!O

如果你有'awk',你可能有'vi',这将轻松打开你的line1153.sql文件,并允许你在数据库中找到导致问题的值。

或者......这条线可能很大,因为它包含多行。您还可以使用mysqldump的--skip-extended-insert选项,以便每行都有一个单独的插入语句。

祝你好运。

答案 2 :(得分:3)

我遇到了同样的问题,因为我的数据库中有中文字符。以下是我在一些中文论坛上发现的内容,它对我有用。

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

答案 3 :(得分:1)

我认为您需要使用path/to/file.sql代替path\to\file.sql

此外,由于某些原因database < path/to/file.sql对我不起作用 - 我必须使用use database;source path/to/file.sql;

答案 4 :(得分:0)

如果所有其他方法都失败了,请使用MySQLWorkbench进行导入。这为我解决了同样的问题。

答案 5 :(得分:0)

我在表名中有特殊字符,例如_\,并且在尝试导入表时会出错。 我通过在转储的sql中将\更改为\\来修复它。 我的表名如rate_\,我使用此命令来修复转储:

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

我没有替换所有反斜杠,因为我不确定数据库中是否存在一些不应替换的反斜杠。

表名中的特殊字符将在登录文件名中转换为@。 阅读http://dev.mysql.com/doc/refman/5.5/en/identifier-mapping.html

答案 6 :(得分:0)

与我有相同的错误

 Unknown command '\▒'.

当我运行这个

 mysql -u root -p trainee < /xx/yy.gz

所以我遵循了这些答案。但是我没有还原的数据库trainee。然后发现 yy.gzzip文件。所以我将文件解压缩后还原为:

 mysql -u root -p trainee < /xx/yy.sql