我使用this主题中的指南成功创建了mysqldump
数据库的myDump.sql
个文件myDb1
。我还创建了第二个数据库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: ' ■-'.
我还想知道是否需要使用与旧数据库相同的数据库名称。我尝试使用不同的名称,但同样的结果错误。
答案 0 :(得分:5)
这可能是由编码系统引起的
我的转储文件是使用powershell中的重定向(“&gt;”)生成的,我遇到了同样的问题。输出重定向生成一个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&lt; dbname&gt; -r&lt; filename&gt;
答案 1 :(得分:0)
检查myDump.sql
文件,它可能是文件中的编码错误。这些垃圾字符会导致此问题。删除垃圾字符以解决问题。
使用Sequel Pro打开显示此
`í}k¯]ÇÝçðWÜ?øy«««_%c�sè;¶`Ìô hãEE¤"8Áü÷ô>ûqzW¯:êmX0`²¸yyëÔºµë¹êGw?û+þ{ð£»g¯ÿçw¯¿ºû/ß¾¹{ö/ï^}÷§oªô__ûöË7_ß'éÁªà¿¿{÷ÍÇ}ôý÷ßOo/ãoßL_¼ùÓG×?ûâÍ«×Óß¼ùãW¯/òÍGË?`