mysql中转储再导入_mysql-从SQL转储还原数据库时启用二进制模式

在Windows上尝试从SQL转储文件还原MySQL数据库时,遇到ASCII ''错误。解决方案包括:启用--binary-mode选项、检查文件编码、使用编辑器转换文件为UTF-8、检查文件头是否有垃圾字符、确保文件不是其他数据库的备份,或者直接解压缩gz文件后导入。
摘要由CSDN通过智能技术生成

mysql-从SQL转储还原数据库时启用二进制模式

我对MySQL非常陌生,并且正在Windows上运行它。 我正在尝试从MySQL中的转储文件还原数据库,但是出现以下错误:

$ >mysql -u root -p -h localhost -D database -o < dump.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: 'SQLite format 3'.

我尝试将$ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql放在ini文件中,但它仍然给出相同的错误。 我该怎么办? 请帮忙。

UPDATE

正如尼克在评论中所建议的那样,我尝试了$ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql,但随后得到了ERROR at line 1: Unknown command '\☻'.这是一个500 Mb的转储文件,当我使用gVIM查看其内容时,只能看到表达式和无法理解的数据。

12个解决方案

120 votes

解压缩文件,然后再次导入。

srinivas answered 2019-10-12T01:06:51Z

42 votes

我在恢复转储文件的Windows中遇到相同的问题。 我的转储文件是使用Windows powershell和mysqldump创建的,如下所示:

mysqldump db > dump.sql

问题来自powershell的默认编码为UTF16。 为了更深入地了解这一点,我们可以使用GNU的“文件”实用程序,并且这里存在Windows版本。

我的转储文件的输出是:

小尾数UTF-16 Unicode文本,具有很长的行,并带有CRLF行终止符。

然后需要转换编码系统,并且有各种软件可以做到这一点。 例如在emacs中,

mysqldump

然后输入所需的编码系统,例如utf-8。

为了将来获得更好的mysqldump结果,请使用:

mysqldump

然后由mysqldump本身处理输出,而不由powershell重定向。

参考:[https://dba.stackexchange.com/questions/44721/error-while-restoring-a-database-from-an-sql-dump]

cdarlint answered 2019-10-12T01:08:29Z

7 votes

您是否尝试过在notepad ++(或其他编辑器)中打开并将我们转换/保存为UTF-8的格式?

请参阅:notepad ++将ansi编码的文件转换为utf-8

另一个选择是使用textwrangle打开文件并将其另存为UTF-8:[http://www.barebones.com/products/textwrangler/]

Menelaos Bakopoulos answered 2019-10-12T01:09:06Z

7 votes

在Windows计算机中,请按照前述步骤操作。

在记事本中打开文件。

点击另存为

选择编码类型UTF-8。

现在获取您的数据库。

Amit Kumar Rai answered 2019-10-12T01:09:57Z

6 votes

使用Tar存档工具提取文件。 您可以通过以下方式使用它:

tar xf example.sql.gz

Ghasem Pahlavan answered 2019-10-12T01:10:21Z

4 votes

可能是您的dump.sql在文件的开头具有垃圾字符或开始时有一个空白行。

Subodh Ranadive answered 2019-10-12T01:10:46Z

4 votes

像这样在Windows PowerShell上运行mysqldump后,我一次遇到此错误:

mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF > db_objects.sql

我所做的就是将其更改为此(管道改为Set-Content):

mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF | Set-Content db_objects.sql

问题就解决了!

Ifedi Okonkwo answered 2019-10-12T01:11:23Z

2 votes

它必须解决dump.sql问题。使用Sequel Pro检查文件编码.dump.sql中应该是垃圾字符。

Datty Wang answered 2019-10-12T01:11:48Z

2 votes

我遇到了同样的问题,但发现转储文件实际上是MSSQL Server备份,而不是MySQL。

有时,旧版备份文件会给我们带来麻烦。 检查您的转储文件。

在终端窗口上:

~$ cat mybackup.dmp

结果是:

TAPE??G?"5,^}???Microsoft SQL ServerSPAD^LSFMB8..... etc...

要停止处理cat命令:

CTRL + C

Hugo Miura answered 2019-10-12T01:12:38Z

2 votes

如果您没有足够的空间或不想在解压缩时浪费时间,请尝试以下命令。

gunzip < compressed-sqlfile.gz | mysql -u root -p

别忘了用您的压缩文件名替换compressed-sqlfile.gz。

如果没有我上面提供的命令,.gz恢复将无法工作。

Dewlance answered 2019-10-12T01:13:16Z

0 votes

您的文件只能是.sql扩展名,(。zip,.gz .rar)等将不受支持。示例:dump.sql

Ibrahim Akbar answered 2019-10-12T01:13:41Z

0 votes

您尝试导入的文件是一个zip文件。 解压缩文件,然后尝试再次导入。

Javaid Mir answered 2019-10-12T01:14:05Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值