我使用此线程的指南成功创建了myDb1数据库的mysqldump文件myDump.sql。 我还创建了第二个数据库myDb2,导航到包含myDump.sql的目录并尝试将其恢复到新数据库myDb2但是失败了,我尝试了两种方法:
> mysql -u root -p myDb2 < myDump.sql;
> -- entered password
和:
> mysql -u root -p
mysql> -- entered password
mysql> USE myDb2;
mysql> SOURCE myDump.sql;
两者都有相同的错误消息:
ERROR:
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: '-'.
我还想知道是否需要使用与旧数据库相同的数据库名称。 我尝试使用不同的名称,但同样的结果错误。
尝试运行file myDump.sql,它打印什么? (如果你在Linux上)
@ user4035我没有linux。 我使用windows powerShell。 尝试将myDump.sql作为mysql> SOURCE myDump.sql;运行,我得到ERROR: Failed to open file 'myDump.sql', error: 2
这个文件是文本文件吗? 用文本编辑器检查它。
@ user4035这是一个.sql文件,由运行mysqldump生成。
这可能是由编码系统引起的
我的转储文件是使用powershell中的重定向(">")生成的,我遇到了同样的问题。 输出重定向生成一个UTF-16 Little endian文件
但是,这可以通过将dumpfile转换为utf-8来解决。 这可以在emacs中完成:
M-x set-buffer-file-coding-system
然后保存文件并再次导入
可以使用GNU"file"实用程序检测文件的编码系统,它也可以在Windows中找到,可以在这里找到:http://gnuwin32.sourceforge.net/packages/file.htm
为了将来使用,可以使用更好的转储命令,例如:
mysqldump -r
检查myDump.sql文件,它可能是文件中的编码错误。 这些垃圾字符会导致此问题。 删除垃圾字符以解决问题。
用Sequel Pro打开就可以看到这一点
`í}kˉ]?Y?eWü??y???_%c?sè;?`ì?h?EE¤"8áü÷?>?qzWˉ:êmX0`2?yy??oμ?1êGw??+t{e£?gˉ??wˉ?o?/??1{?/?^}÷§oa?__???7_?'éáaà??{÷í?}?y÷?Oo/?o?L_?ùóG×??aí?×ó??ù?Wˉ/òíG??`