无法将MYSQL备份还原到新数据库

时间:2013-08-30 17:07:52

标签: mysql mysqldump database-backups

我使用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: ' ■-'.

我还想知道是否需要使用与旧数据库相同的数据库名称。我尝试使用不同的名称,但同样的结果错误。

2 个答案:

答案 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Ë?`