【问题标题】:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (8548 > 1024)com.mysql.jdbc.PacketTooBigException: 查询数据包太大 (8548 > 1024)
【发布时间】:2017-06-10 05:52:18
【问题描述】:

我在尝试从我的 java 代码向 mysql DB 中插入数据时间歇性地出现以下错误。

"PreparedStatementCallback; SQL []; Packet for query is too large (8548 > 1024). 你可以在服务器上通过设置max_allowed_pa​​cket'变量来改变这个值。;嵌套异常是com.mysql.jdbc.PacketTooBigException: Packet for query is too large (8548 > 1024)。您可以通过设置 max_allowed_pa​​cket' 变量在服务器上更改此值。"

my.inf 文件如下所示

"# 一个数据包或任何生成的或中间字符串的最大大小,或由服务器发送的任何参数 "# mysql_stmt_send_long_data() C API 函数。 max_allowed_pa​​cket=500M"

一旦我重新启动 mysql 服务器,它就可以正常工作,没有错误。但是几天后又出现了同样的错误。

谁能帮我解决这个错误?

【问题讨论】:

    标签: java mysql


    【解决方案1】:

    看起来至少类似于(被拒绝的)bug report #76816 at MySQL bug database

    建议确保max_allowed_packet 设置不会从其他地方更改。他们就如何使用 MySQL 日志记录找出谁/什么更改了设置提供了建议。引用:

    [...] 我们怀疑由于最大允许数据包是动态的 变量并且可以全局更改,因此一些用户/脚本(连接 字符串某处重置此值)正在内部更改它。
    可能您想启用日志记录(在 MySQL 和/或应用程序级别) 并尝试确定谁/如何更改。

    有关各种日志记录的详细信息,请参阅此页面 - https://dev.mysql.com/doc/refman/5.5/en/server-logs.html

    【讨论】:

      猜你喜欢
      • 2017-04-07
      • 1970-01-01
      • 2015-10-10
      • 2016-05-06
      • 2012-04-25
      • 2012-03-16
      • 1970-01-01
      • 2016-05-14
      • 2012-07-04
      相关资源
      最近更新 更多