错误 2020:转储表时获得的数据包大于“max_allowed_pa​​cket”字节

错误 2020:转储表时获得的数据包大于“max_allowed_pa​​cket”字节

当我使用 ZRM 进行备份时出现上述错误,其中使用 mysqldump 进行备份。

mysqldump --opt --extended-insert --single-transaction --create-options --default-character-set=utf8 --user=" " -p --all-databases > "/nfs/backup/mysql01/dailyrun/20091216043001/backup.sql"

TICKET_ATTACHMENTmysqldump:错误 2020:在行 2286 处转储表时获得的数据包大于“max_allowed_pa​​cket”字节

我已将 /etc/my.cnf 中的“max_allowed_pa​​cket”大小增加到 1G,这是服务器设置,对于客户端设置,我通过运行以下命令进行设置:

mysql -u -p --max_allowed_pa​​cket=1G

并且我已经验证在客户端和服务器端它们是相同的值。

这是根据论坛帖子检查客户端的值http://forums.mysql.com/read.php?35,75794,261640

mysql> SELECT @@MAX_ALLOWED_PACKET -> ; +----------------------+ | @@MAX_ALLOWED_PACKET | +----------------------+ | 1073741824 | +----------------------+ 1 行在集合中(0.00 秒)

这是检查服务器值设置。

mysql>显示变量

| 最大允许数据包数 | >

1073741824 |

我已经没有主意了,也试过在专家交流会上搜索以及在谷歌上寻找解决方案,但到目前为止都没有奏效。

参考 http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html

请任何人提供意见,谢谢。

答案1

那不是‘另外’。mysqldump 因忽略 my.cnf 中的这个值而臭名昭著,但将其设置为命令行参数总是有效的。

答案2

这是来自专家交流的回复:

您必须增加 my.cnf 中 mysqldump 部分下的 max_allowed_pa​​cket,默认值为 25M

[mysqldump] max_allowed_pa​​cket = 1G

或者,您可以使用所需的 max_allowed_pa​​cket 值调用 mysqldump。

mysqldump --max_allowed_pa​​cket=1G

答案3

请使用以下命令来解决您的问题。

# mysqldump --max_allowed_packet=1024M -u root -p database > dumpfile.sql

这将解决你的问题

注意:您可以根据需要设置最大值。这里我们使用 1024M 作为示例。

答案4

您可能需要在几个地方解决这个问题:在命令行上、在 my.cnf 的 [mysqld] 部分以及 my.cnf 的 [mysqldump] 部分。我一直在努力解决这个问题,最后通过将所有这些设置为 2G 使其正常工作。我暗自怀疑最低的那个会获胜...

相关内容