我正在将 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_packet
系统变量增加到其最大值,但没有成功。
最佳答案
如果我没记错的话,您需要将 my.cnf 中的 max_allowed_packet 设置为足够大的值以容纳转储文件中的最大数据 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/