3

我使用此线程中的指南成功创建了数据库mysqldump文件。我还创建了第二个数据库,导航到包含并尝试将其还原到新数据库的目录,但失败了,我尝试了两种方法:myDump.sqlmyDb1myDb2myDump.sqlmyDb2

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

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

4

2 回答 2

5

这可能是由编码系统引起的。
我的转储文件是在 powershell 中使用重定向(“>”)生成的,我遇到了同样的问题。输出重定向生成了一个带有 UTF-16 Little endian 的文件。

但是,这可以通过将转储文件转换为 utf-8 来解决。这可以在 emacs 中完成,如下所示:

Mx 设置缓冲区文件编码系统

然后保存文件并再次导入。

可以使用 GNU“文件”实用程序检测文件的编码系统,它也可以在 windows 中找到,可以在这里找到:http
://gnuwin32.sourceforge.net/packages/file.htm 供将来使用,更好的转储命令如:

mysqldump <数据库名> -r <文件名>

于 2013-11-20T03:54:24.030 回答
0

检查myDump.sql文件,它可能是文件中的编码错误。这些乱码会导致此问题。删除乱码即可解决问题。

Open with Sequel Pro 显示了这一点

`í}k¯]ÇÝçðWÜ?øy«««_%c�sè;¶`Ìô hãEE¤"8Áü÷ô>ûqzW¯:êmX0`²¸yyëÔºµë¹êGw?û+þ{ð£»g¯ÿçw¯¿ºû/ß¾¹{ö/ï^}÷§oªô__ûöË7_ß'éÁªà¿¿{÷ÍÇ}ôý÷ßOo/ãoßL_¼ùÓG×?ûâÍ«×Óß¼ùãW¯/òÍGË?`
于 2014-10-20T03:16:51.133 回答