mysqldump错误:包大于max_allowed_pa​​cket'

时间:2012-01-11 07:08:53

标签: mysql mysqldump

我的应用程序下载邮件通过IMAP并将它们存储在MySQL数据库中。早些时候我支持的邮件大小高达10 MB,因此用于存储邮件内容的“中等文本”列就足够了。现在我需要支持高达30MB的邮件。所以我将列的数据类型更改为'largetext'。昨天存储了一个大小为25 MB的邮件。之后,每当我执行mysqldump命令时,它都会抛出错误:

mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `ib_mailbox_backup` at row: 3369

第3369行包含25 MB邮件。

在MySQL配置中,我将'max_allowed_pa​​cket'从64M增加到512M,但它仍然以相同的错误失败。在运行MySQL服务器的同一台机器上执行mysqldump命令。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:104)

  1. 您可以将--max_allowed_packet=512M添加到mysqldump命令。
  2. 或者将max_allowed_packet=512M添加到[mysqldump]的{​​{1}}部分(感谢@Varun)
  3. 注意:如果它不在my.cnf部分...

    下,它将无效

答案 1 :(得分:2)

我的一些脚本在升级到Debian 9& MariaDB的。

Debian上的MariaDB引入了一个专门用于mysqldump设置的新配置文件(/etc/mysql/conf.d/mysqldump.cnf)。如果您设置了max_allowed_packet<>在您之前的标准16M/etc/mysql/my.cnf,新的配置文件将覆盖该设置。因此,请务必检查此新配置文件,并删除该条目或根据您的需要进行调整。

我不确定是否通过从MySQL到MariaDB的交换引入了更改,或者Debian是否更改了配置文件在V9中的布局方式。

答案 2 :(得分:0)

我遇到了类似的错误,第0行的数据包大小为512M会失败。这是一个明显受损的innodb表(mysqlcheck显示OK)。我最终重新创建了表,然后它只用了128M的小包就可以正常工作。