用powershell导出的mysql库,在导入时出错

42 2018-12-21 13:28

在windows服务器上导入mysql文件时,出现以下报错:

ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: '?-'.


后来百度了一下,发现这样一个回答:

The reference to --binary-mode (introduced in MySQL 5.6.3) is probably a distraction.

It doesn't sound like you're dealing with a mysqldump output file, there. Try the file utility.


shell> file dumpfile.sql

dumpfile.sql: ASCII text 

If you don't get the ASCII text response, you're dealing with either something that isn't a dump file from mysqldump at all, or you're dealing with something that's been compressed (with gzip or bzip2, for example), which you'd need to uncompress before piping it into mysql.

大意是说,错误信息里的--binary-mode极具迷惑性。事实上,这并不意味着你的 sql文件里包含ASCII字符。可以先通过file命令查看该文件的字符类型。


于是将该sql文件上传至Linux服务器上,执行了一下file:

[root@localhost ~]# file dafanshu_db.sql 

dafanshu_db.sql: Little-endian UTF-16 Unicode text, with very long lines, with CRLF line terminators

结果很明显,这里面并没有什么ASCII字符,所以即使将mysql设置成--binary-mode,也无济于事,是文件格式的问题。


后来无意中发现,用more查看这个文件,无法正常显示任何内容,用vi却可以。这更加说明,这个sql文件绝对不是普通的文本文件。


最后想起,这个sql文件是在powershell里导出来的。于是尝试在cmd下重新导一次,然后再导入,就正常了。这坑爹的powershell。。。