mysql - 使用二进制 blob 恢复 MySQL 转储

标签 mysql backup database-backups mysql-backup

我正在将 MySQL 数据库从现在无法访问的服务器移动到新服务器。转储包含的表又包含二进制 blob,这似乎会给 MySQL 命令行客户端带来麻烦。当尝试恢复数据库时,出现以下错误:

ERROR at line 694: Unknown command '\''.

我检查了发生错误的行,发现这是一个巨大的插入语句(长度约为 900k 个字符),它似乎将二进制 blob 插入到表中。

现在,我找到了these two似乎与我的问题有关。然而,这两个答案都没有解决我的问题。添加 --default-character-set=utf8 甚至 --default-caracter-set=latin1 没有改变任何内容并使用 -- 创建转储hex-dump 不可能,因为源数据库服务器不再可访问。

有什么方法可以通过 MySQL 命令行客户端恢复此备份吗?如果是,我需要做什么?

如果您需要任何其他信息,请告诉我。

提前致谢。

编辑:我正在使用 MySQL 5.6.35。另外,除了上面概述的尝试之外,我还尝试在服务器和客户端上将 max_allowed_pa​​cket 系统变量增加到其最大值,但没有成功。

最佳答案

如果我没记错的话,您需要将 my.cnf 中的 max_allowed_pa​​cket 设置为足够大的值以容纳转储文件中的最大数据 blob,然后重新启动 MySQL 服务器。

然后,您可以使用如下恢复命令:

mysql --max_allowed_packet=64M  < your_dumpfile.sql

更多信息在这里: [https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_max_allowed_packet]

关于mysql - 使用二进制 blob 恢复 MySQL 转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42379486/

相关文章:

mysql - 查找数据库条目相对于 Rails 3 中 mysql 数据库中字段的顺序或排名

sql-server - 是否可以通过 Azure 云托管上的 SQL Server Management Studio 创建 .bak 文件?

php - mysql 的最佳实践?

Mysql Datediff 查询

MySQL:使用别名作为列

android - adb 备份不起作用

unix - 将--ignore-failed-read添加到tar会导致 "unknown function modifier"错误

sql-server - 如何备份SQL Server代理作业?

mysql - 如何在 CentOS 6 中为 MariaDB Galera 集群配置多主复制

sql-server - SQL Server 数据库的 SQL 脚本导出的命令行方法