首页 文章

mysqldump错误:包大于max_allowed_packet'

提问于
浏览
38

我的应用程序下载邮件通过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_packet'从64M增加到512M,它仍然失败并出现相同的错误 . 在运行MySQL服务器的同一台机器上执行mysqldump命令 . 我该如何解决这个问题?

3 回答

  • 90
    • 您可以将 --max_allowed_packet=512M 添加到 mysqldump 命令中 .

    • 或将 max_allowed_packet=512M 添加到 my.cnf[mysqldump] 部分(感谢@Varun)

    注意:如果它不在 [mysqldump] 部分下,它将无效...

  • 0

    升级到Debian 9和MariaDB后,我的一些脚本停止工作 .

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

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

  • 1

    我有一个类似的错误,并将失败,第0行的数据包大小512M . 这是一个明显损坏的innodb表(mysqlcheck显示确定) . 我最终重新创建了表,然后它只用了128M的小包就可以正常工作 .

相关问题