mysql数据库还原出错解决手记(Incorrect string value/ERROR:Unknown command ‘\\’)

MySQL还原.sql备份格式的数据,有时会遇到错误,原因可能是字符集错误,经验上至少包括Incorrect string value 与 ERROR:Unknown command 这两个错误,可以考虑在导入脚本上加入 –default-character-set 参数指定.sql文件字符编码;特别的,如果包含表情符等字符的,最好使用 utf8mb4 而不是utf8。

一个具体案例,如下截图所示,

ERROR 1366 (22007) at line xx: Incorrect string value: '\xF0\x9F\x8C\xBF' for column xx at row x

备份文件包含了 create table 语句,实际还原时要忽略掉这部分,因此使用 sed过滤掉前面46行。原来以为这种错误行很少,加了–force参数忽略错误行而继续,但太多,于是Ctrl-c中止了。之后加上 –default-character-set=utf8mb4 参数,就顺便执行,没有错误。
————– 下面是多年前的老版本文件,仅为参考而保留 —————

使用mysql命令行客户端,使用source导入备份文件,但导入中出错,

ERROR:
Unknown command ‘\\’.
ERROR:
Unknown command ‘\”.
ERROR:
Unknown command ‘\\’.
ERROR:
Unknown command ‘\”.
ERROR:
Unknown command ‘\\’.
ERROR:
Unknown command ‘\”.
ERROR:
Unknown command ‘\\’.
ERROR:
Unknown command ‘\”.

并且直接出现win32程序错误的提示,mysql客户端自动退出。

上网查询有人说是编码问题,在连接服务器端时命令中指定编码,如下形式

>mysql -uroot -pxxxxxx --default-character-set=utf8

要还原的数据库本身是gbk编码,但备份文件是utf-8,于是在连接时指定为gbk,但导入中照样出错。于是改用utf-8,出上命令行所未,居然好了,完全导入成功,2G多的数据库。

看来mysql的字符编码问题还要多多了学习,有点深奥。

是为手记20110526

—— 后记 20110603——————-

一定要在连接mysql时,使用–default-character-set=utf8 参数,而不是在连接后使用 set names utf8 ,经测试,这样不行的。

《mysql数据库还原出错解决手记(Incorrect string value/ERROR:Unknown command ‘\\’)》有2条评论

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据