Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用二进制blob恢复MySQL转储_Mysql_Backup_Database Backups_Mysql Backup - Fatal编程技术网

使用二进制blob恢复MySQL转储

使用二进制blob恢复MySQL转储,mysql,backup,database-backups,mysql-backup,Mysql,Backup,Database Backups,Mysql Backup,我正在将一个MySQL数据库从一个现在无法访问的服务器移动到一个新的服务器。转储包含表,这些表又包含二进制blob,这似乎会给MySQL命令行客户端带来麻烦。尝试还原数据库时,出现以下错误: ERROR at line 694: Unknown command '\''. 我检查了发生错误的那一行,发现这是一个巨大的insert语句(长度约900k个字符),它似乎在表中插入二进制BLOB 现在,我发现了一些似乎与我有关的问题。然而,事实证明,这两个答案并不能解决我的问题。添加--default

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

ERROR at line 694: Unknown command '\''.
我检查了发生错误的那一行,发现这是一个巨大的insert语句(长度约900k个字符),它似乎在表中插入二进制BLOB

现在,我发现了一些似乎与我有关的问题。然而,事实证明,这两个答案并不能解决我的问题。添加
--default character set=utf8
或甚至
--default caracter set=latin1
不会更改任何内容,并且无法使用
--hex dump
创建转储,因为无法再访问源数据库服务器

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

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

提前谢谢


编辑:我使用的是MySQL 5.6.35。此外,除了上述尝试之外,我已经尝试将服务器和客户端上的
max\u allowed\u packet
系统变量增加到其最大值,但没有效果。

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

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

mysql --max_allowed_packet=64M  < your_dumpfile.sql
mysql--max\u allowed\u packet=64M
更多信息请点击此处:
[

没有解决方案,只是确认我在包含长JSON字符串的“文本”字段类型中看到了相同的行为。MySQLdump生成的SQL(备份)文件有一个INSERT语句,它将特定文本字段的长度截断为“大约”64K(有许多转义引号/双引号和各种UTF-8字符)-未发出此类截断发生的警告

当然,由于JSON格式的字符串过早终止,恢复到JSON列的操作会失败

奇怪的是,备份表中的列被定义为文本,实际上应该限制为64 KB。凭直觉,我将备份表的架构更改为MEDIUMTEXT。此后,MySQLdump不再截断INSERT语句中64K以外的字符串


看起来好像MySQLdump不仅输出整个列,而且截断到它认为最大字符串长度应基于架构信息的任何值,并且在截断时不会发出警告。

啊,对。我忘了提到这一点,我的错。我已经尝试将max_allowed_数据包设置为最大值(1073741824)并向mysql添加了相同的值,但没有任何更改。错误消息保持不变。