导入mysql文件提示“ASCII '\0' appeared in the statement”
我的解决方法是 将无bom头的UTF-8添加上bom头信息:
sublime-file-save with encoding - utf-8 with bom
其他解决方法
https://blog.csdn.net/github_38885296/article/details/78536311
在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。。。
https://blog.csdn.net/CodeHouse/article/details/80612330
mysql 执行sql文件时报:Warning: Using a password on the command line interface can be insecure.
ERROR at line 2104889: 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.
解决方法:mysql –binary-mode=1 -hIP -uUSER -pPWD -PPORT
use database;
source /PATH/tbl.sql
–binary-mode
This option helps when processing mysqlbinlog output that may contain BLOB values. By default, mysql translates \r\n in statement strings to \n and interprets \0 as the statement terminator. --binary-mode disables both features. It also disables all mysql commands except charset and delimiter in non-interactive mode (for input piped to mysql or loaded using the source command).