You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改max_allowed_packet后Java连接MySQL仍报数据包过大错误如何解决

解决步骤
  • 第一步:验证服务端配置是否生效
    登录目标MySQL服务,执行命令:

    show variables like 'max_allowed_packet';
    

    若返回值为65535(即64KB),说明之前的配置未生效:

    1. 检查my.cnf配置是否写在[mysqld]分段下,不能写到[mysql]等客户端配置分段
    2. 配置示例:max_allowed_packet = 16M(需大于实际的数据包大小4.7MB,这里设16M即可)
    3. 重启MySQL服务后重新执行上述SQL确认参数生效
  • 第二步:添加JDBC连接参数
    MySQL 8.x版本的JDBC驱动存在客户端层面的数据包大小限制,需在JDBC连接串中显式配置maxAllowedPacket参数,修改后的连接串如下:

    String url = "jdbc:mysql://10.20.30.40:32/BI_data?maxAllowedPacket=16777216" ;
    

    其中16777216对应16MB的字节数,可根据实际业务需求调整大小。

  • 第三步:排查中间链路限制
    如果上述配置都生效后仍报错,需检查访问链路上是否存在数据库代理、防火墙、WAF等设备,这类中间设备可能会限制单TCP包的最大大小,导致数据包被截断返回报错。

  • 第四步:SSH隧道访问适配(针对最终需求)
    若需要通过SSH隧道访问MySQL,需先在本地建立SSH端口转发:

    1. 执行SSH端口转发命令:ssh -L 本地端口:127.0.0.1:MySQL服务端口 SSH用户名@SSH服务器IP
    2. 将JDBC连接串的IP和端口改为127.0.0.1:本地端口即可,SSH隧道默认无数据包大小限制,无需额外调整SSH配置(除非手动修改过SSH的MaxPacketSize参数)

内容的提问来源于stack exchange,提问作者VSTech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:54:00