MySQL Packet for query is too large (xxx > xxx)...by setting the ‘max_allowed_packet‘ variable.的解决办法

C++直连MySQL实战:从环境配置到安全读取数据 MySQL数据库连接是后端开发的基础能力,而C++作为系统级语言,需在零运行时依赖、低延迟和内存可控前提下完成数据库交互。其核心原理在于通过C API建立TCP或Unix Socket连接,调用mysql_init、mysql_real_connect等函数完成握手,并借助mysql_set_character_set统一字符编码,再以mysql_store_result+mysql_fetch_row安全解析结果集。该方案规避了ORM抽象带来的调试黑盒与类型不匹配风险,技术价值体现在毫秒级响应、RAII资 阅读详情

问题概述

关于这个问题,博主是在项目上线生产运行的过程中遇到的,在一次运营部门的同事通知,系统功能操作出现异常,博主随即对问题展开排查和处理,通过后台日志发现,事务提交失败 “ Could not commit JDBC transaction; ”,导致事务提交失败的原因是因为系统中查询的数据包太大 “ Packet for query is too large (4,529,504 > 4,194,304). ”,如下图:

如下图:

具体异常信息如下:

Caused by: com...commons.result.AppException: Could not commit JDBC transaction; nested exception is java.sql.SQLException: com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (4,529,504 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.
	at com....common.aspect.LogAspect.around(LogAspect.java:58) ~[classes!/:0.0.1-SNAPSHOT]
	at sun.reflect.GeneratedMethodAccessor767.invoke(Unknown Source) ~[na:na]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_282]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_282]
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) ~[spring-aop-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) ~[spring-aop-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) ~[spring-aop-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) ~[spring-aop-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) ~[spring-aop-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) ~[spring-aop-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
	... 47 common frames omitted

解决办法

分析问题:

从后台打印的异常信息中得知,导致系统功能操作异常,事务提交失败,是因为查询的数据包过大导致的,
根据错误信息,查询当前数据库中的 “ max_allowed_packet ” 大小(注:该参数的单位->B,即字节),
输入指令“ SHOW VARIABLES LIKE '%max_allowed_packet%'; ”,如下图:

 结合控制台的异常信息 (4,529,504 > 4,194,304),默认数据包大小为4,194,304字节,

很显然,最终的问题出现在了MySQL 的数据包限制上面,到这儿问题找到了,

解决问题:

MySQL 中默认定义了Server接收的数据包大小。在进行系统更新、查询、新增数据包时,其数据包的大小会受 max_allowed_packet 参数限制,导致操作失败。

解决办法有三种:
第一种,修改代码程序,如果必须,将数据包进行拆分(业务逻辑拆分),通过优化数据包的大小来解决这个问题,例如,之前是所有数据一次提交,优化后每次提交100条数据,只不过数据量大的时候,一个这样的业务功能操作点消耗时间有点长了

第二种,通过指令来修改 “ max_allowed_packet ” 的大小,
输入指令 “ SET GLOBAL max_allowed_packet = 20971520; ”,
设置成功后,再次查看,如下图:

注:20971520的由来,因为该参数的单位为B,需要进行换算,目前设置为20M,

则 20 *1024 *1024 = 20971520字节

第三种,通过修改MySQL的配置文件(在安装目录下)“ my.cnf ”中的 “ max_allowed_packet ”,有就修改,没有就添加一个(windows->my.ini,Linux->my.cnf),
max_allowed_packet = 20971520

如果是容器,直接挂载一个 “ my.cnf ” 的配置文件进去即可,内容如下(注意标头):

[mysqld]
max_allowed_packet = 20971520

如下图:

修改好后,因为是配置文件,需要重新启动MySQL服务才能加载,这个是第三种解决办法的弊端,如果当前需要马上解决这个问题,但是又不能中断系统服务,则只能使用第二种,先把问题解决了再考虑后面的事。

修改好 “ max_allowed_packet ” 数据包限制后,再次提交操作,就可以该问题了,如下图:

小结:
第二种解决办法如果MySQL服务重启,则 max_allowed_packet 默认值将还原到之前的大小,第三种方法则会永久保持,关于这两种方法的应用,
如果是临时解决这个问题,让用户先用起来,则使用第二种方法,如果没有时限性,可以考虑修改MySQL的配置文件,然后中断系统服务,重启MySQL服务器,以满足其配置文件生效目的。


好了,关于 MySQL Packet for query is too large (xxx > xxx)...by setting the 'max_allowed_packet' variable.的解决办法 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


作       者:华    仔
联系作者:who.seek.me@java98k.vip
来        源:优快云 (Chinese Software Developer Network)
原        文:https://blog.youkuaiyun.com/Hello_World_QWP/article/details/122962952
版权声明:本文为博主原创文章,请在转载时务必注明博文出处!
云MySQL选型不是二选一,而是场景切片决策 MySQL数据库部署方式本质上是基础设施选型问题,核心在于理解稳态业务与敏态业务在流量特征、SLA要求、运维能力上的根本差异。云数据库(如RDS、PolarDB)通过托管服务降低运维复杂度,其技术价值体现在弹性伸缩、高可用保障与合规内置;而自建MySQL则在超大规模归档、深度内核定制及混合负载隔离等场景具备不可替代性。实际应用中,RDS适用于ERP/CRM等低频变更系统,PolarDB适配直播弹幕、大促秒杀等高并发低延迟场景,自建方案多见于运营商话单库或国产化政务系统。本文基于17个生产案例,聚焦阿里云RD 阅读详情

相关推荐

Mysql报错Packet for query is too large问题解决

修改 my.ini 加上 max_allowed_packet =67108864。修改完成之后要重启mysql服务,如果通过命令行修改就不用重启mysql服务。查看mysql的max_allowed_packet大小,运行。默认大小4194304 也就是4M。批量插入数据量过大,解决办法。命令修改:(即时生效)

专注基础架构领域 2171

事务结束发生错误,错误信息:Could not commit JDBC transaction; nested exception is java.sql.SQLException: Connecti

事务结束发生错误,错误信息:Could not commit JDBC transaction; nested exception is java.sql.SQLException: Connection com.mysql.jdbc.JDBC4Connection@66fcd8bf is closed.事务结束发生错误,错误信息:Could not commit JDBC transaction; nested exception is java.sql.SQLException: Connection

qq_39201012的博客 1万+

MySQL 8.0 实战学习路径:Docker 环境搭建+故障排查+性能分析

MySQL 是关系型数据库的核心代表,其安装配置、SQL 执行原理、锁机制与主从复制构成数据库工程师的底层能力基石。理解 InnoDB 存储引擎如何通过 Buffer Pool、Redo Log 和 MVCC 实现高并发与数据一致性,是掌握 MySQL 性能优化与故障定位的前提。技术价值体现在快速构建可调试环境、精准识别慢查询与锁等待、支撑高可用架构落地。典型应用场景包括电商订单系统建模、微服务数据同步、压测瓶颈定位及生产级 SQL 审计。本文以 MySQL 8.0.33 为基准,聚焦 Docker 环境标

weixin_30745553的博客 418

org.springframework.transaction.TransactionSystemException:Could not commit JDBC transaction;nested

删除@Transactional(rollbackFor = Exception.class)注解。开启事务A后,代码逻辑开启另一个事务B操作同一个表,表被占用,请求超时,导致数据库事务提交错误。以图内案例为例,把删除操作单独开启从事务(事务结束后取消对表的占用)将一个服务的代码放到另一个服务中,使其在同一事务中操作同一个表。这个错误在尝试提交JDBC事务时出现了问题,原因是连接被禁用。数据库与数据库驱动版本适配。数据库连接池配置正确。连接一段时间后超时,然后报错。

Artij的博客 2665

JavaWeb图书管理系统:Servlet+JDBC高分毕设实战

JavaWeb是高校Java课程核心实践方向,指基于Servlet、JSP、JDBC等原生技术构建的B/S架构应用。其原理在于通过HTTP协议处理请求响应,利用JDBC直连数据库实现CRUD,配合JSP动态生成页面,形成轻量可控的三层结构。该技术栈具备环境兼容性强、部署路径清晰、调试逻辑透明等工程价值,特别适配高校机房常见的Tomcat 8.5 + MySQL 5.7 + JDK 1.8老旧组合。典型应用场景包括毕业设计、课程设计及教学演示系统开发,其中图书管理系统因其功能完整、边界清晰、可扩展性强,成为高

weixin_34408624的博客 339

MSP430开发入门:手把手教你用IAR EW430从建工程到烧录调试(附F5529配置)

本文详细介绍了如何使用IAR Embedded Workbench(EW430)进行MSP430F5529开发板的嵌入式开发,从环境搭建、工程配置到硬件调试全流程。通过实战示例和关键配置技巧,帮助开发者快速掌握MSP430开发的核心要点,包括LED控制、定时器使用和低功耗优化等实用技术。

weixin_30240349的博客 391

切换tidb数据库后,不时出现报错 Could not commit JDBC transaction

1、异常描述 org.springframework.transaction.TransactionSystemException: Could not commit JDBC transaction; nested exception is java.sql.SQLException: Write conflict, txnStartTS=426985930345676879, 切换tidb数据库后,不时出现以上的报错; 2、问题分析 根据报错内容查找网上资料发现是写写冲突,tidb数据库3.0版

xuliqi98的博客 3694

PointNet/PointNet++模型调参实战:如何用PyTorch让你的点云分割精度再涨5个点?

本文深入探讨了PointNet/PointNet++模型在点云分割中的调参技巧,通过PyTorch实现精度提升5个点的实战方法。重点分析了点云密度自适应策略、感受野与细节保留的平衡,以及训练加速与稳定性技巧,适用于电力巡检、自动驾驶等场景的激光点云数据处理。

weixin_30836759的博客 475

Sharding-JDBC 事务提交异常(Druid空闲检测未剔除已失效连接)

异常问题 最近线上环境有一个服务频繁出现更新异常,提示不能提交JDBC事务,但是事务并没有回滚。 org.springframework.transaction.TransactionSystemException:Could not commit JDBC transaction; nested exception is java.sql.SQLException 完整报错信息: com.XXX.XXXX.XX.XXXXXX.facade.RuleUpdateFacadeService.updateP

寒武没有纪 3494

欧姆龙 CJ1W-SCU模块使用通配符+结束码实现非固定长度数据的接收

实验设备:CJ2M-CPU33、CJ1W-SCU21、XW2Z-200T 实验目的:了解 CJ1W-SCU 通配符使用 1.硬件接线: CJ1W-SCU21单元号拨码置于8,使用串口1(232口)。 2.软件设置: ① 新建工程,选择PLC型号CJ2M-CPU33,切换到编程模式,如下图: 、 ② 创建I/O并进行相关配置,如下图: ③ 设置为用户设置,协议宏模式,8位数据位,2位停止位,偶校验9600波特率,如下图: 、 ④ 打开CX-Protocal软件,新建工程: .

weixin_42118352的博客 1983

鸿蒙系统开发工程师:核心技术解析与深度面试指南

摘要: 鸿蒙系统开发工程师需具备底层驱动开发、系统移植优化及分布式架构能力。核心职责包括硬件适配(Bootloader、内核移植、HDF驱动开发)、性能调优(启动加速、功耗管理)及稳定性保障。技术要求涵盖C/C++编程、Linux内核机制、鸿蒙架构(HDF、分布式服务)及ArkTS/ArkUI基础。面试重点考察系统移植流程(如ARM板适配)、驱动开发(I2C/Display)、性能优化手段及内存/同步机制的应用。

郑伟强dev的专栏 429

JDBC往mysql中插入Blob类型数据报错(Packet for query is too large(xxx>xxxx))

报错信息:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (6658219 > 4194304). You can change this value on the server by setting the max_allowed_packet’ variable. 错误显示: 代码示例: // 向数据表customers中插入Blob类型的字段 @Test public void testInsert()

cV展示的学习园 429

CloudCompare 二次开发(16)——计算点云最值

不依赖任何第三方点云相关库,使用ClopudCompare计算点云最值。

点云侠的博客 517

MySql 5.6 Packet for query is too large

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34416754的博客 161

分布式协作方案:OpenClaw多节点部署与设备互联

主从架构或对等架构服务发现与注册机制负载均衡策略选择分布式任务队列优先级调度失败重试机制WebSocket实时通信数据同步引擎冲突解决策略健康检查机制故障自动转移数据复制与恢复通过分布式部署,OpenClaw可以支撑更大规模的业务场景,提供更稳定可靠的AI助手服务。在下一篇文章中,我们将深入探讨安全与权限管理的精细化策略。

gaoxiang_120的专栏 370

Python爬虫分析二手交易平台商品定价合理性:基于多维度数据挖掘与机器学习

本文针对二手交易平台商品定价合理性问题,设计并实现了一个基于Python的多技术融合爬虫系统,结合Scrapy框架、Selenium自动化测试工具、Anti-Scraping对抗技术以及机器学习算法,对国内主流二手交易平台(闲鱼、转转等)进行大规模数据采集与分析。系统实现了商品信息的多维度采集、价格合理性模型构建、可视化展示等功能,为二手商品买卖双方提供科学的定价参考。实验结果表明,该系统能够有效识别定价异常商品,准确率达到89.7%,具有较高的实用价值。关键词:Python爬虫;二手交易;定价分析;

2201_76125261的博客 297

Packet for query is too large

数据库:mysql5.6 framework: play framework 1.2.4 近日处理批量数据的insert,update,涉及的保存更新sql大概有18w。我的操作如下: 1)每次取1000条数据进行相关逻辑判断,以及需要的保存操作; 2)每100条sql做一次transaction.commit。 今天在执行过程中,保存含有些Blob字段的数据表时,报错如下: P...

weixin_30949361的博客 140

乐企归集能力说明文档V2.0006

纳税人销售货物、提供服务开具的增值税发票及购进货物、接受服务取得的增值税发票、海关缴款书(含出口转内销证明)、代扣代缴完税凭证,可以通过本能力进行归集。纳税人可将本能力中的各类规则和接口嵌入本单位信息化系统中(如:销售、报销、财务等),实现发票自动化归集,便于纳税人完成发票入账、抵扣、退税以及代办退税等操作,有效提升涉税业务办理效率。

记录点滴 572

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1305536> 1048576). You can chan

mysql

我有一张床的博客 375

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

针对Package for query is too large的解决

MySQL的四种BLOB类型 如果在指定了相关的Blob类型以后,还报错:xxx too large,那么在mysql的安装目录下,找my.ini文件加上如下的配置参数: max_allowed_packet=16M。同时注意:修改了my.ini文件之后,需要重新启动mysql服务。 ...

Airuiliya520的博客 1026

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

常见的数据库Cause:Packet for query is too large(xxx > 1024)

1.原因 查询数据库返回的数据包太大,超过了默认值。 登录mysql数据库,在控制台输入命令查询默认的max_allowed_packet值,发现默认只有1024: show VARIABLES like '%max_allowed_packet%'; 2.解决 (1)在mysql控制台下输入以下命令,设置max_allowed_packet为20M set globa...

weixin_30781631的博客 187

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MySQL IN子句参数上限解析与工程优化实践

在数据库查询优化中,IN子句作为常用的条件筛选方式,其性能表现直接影响查询效率。从技术原理层面,MySQL通过max_allowed_packet参数控制单次通信数据包大小,这决定了IN子句的参数容量上限。理解这一机制对工程实践具有重要意义,因为超长SQL语句不仅会触发数据包限制错误,还会导致查询解析时间增加和索引使用效率下降。在实际应用场景中,当需要处理大量参数时,临时表关联查询和分批次处理成为关键优化手段,能够有效平衡查询性能与系统资源消耗。本文基于MySQL协议解析和性能测试数据,深入探讨IN子句在J

weixin_33937778的博客 326

Ubuntu 20.04下用PHP+MySQL BLOB安全存取图片实战

BLOB(Binary Large Object)是关系型数据库中存储二进制数据的基础类型,其核心原理是将文件以原始字节流形式嵌入表字段,在ACID事务保障下实现数据与元信息的强一致性。相比文件系统或对象存储,BLOB的技术价值在于规避孤儿文件、简化权限控制、提升跨环境部署可靠性,尤其适用于医疗影像、IoT固件、SaaS用户头像等1–5MB量级、日均百次上传、强事务耦合的场景。本文聚焦Ubuntu 20.04 + PHP 7.4 + MySQL 8.0技术栈,详解BLOB类型选型(MEDIUMBLOB)、m

jlins_you的专栏 485

MySQL 8.0 Windows安装深度指南:ZIP包手动部署与配置避坑

MySQL 8.0 是数据库架构升级的关键版本,其默认字符集 utf8mb4、认证插件 caching_sha2_password 及 InnoDB 表空间机制变化,彻底改变了安装逻辑。理解初始化原理(如 mysqld --initialize 与 --initialize-insecure 的差异)、服务注册机制及 my.ini 底层参数(character-set-server、default_authentication_plugin、innodb_buffer_pool_size)是保障连接稳定、避

aofan9566的博客 279

阿里云小应用数据库选型:MySQL自建 vs 瑶池RDS决策指南

数据库选型本质是技术能力、运维成本与业务确定性的综合权衡。MySQL作为最主流的关系型数据库,其自建部署虽具高度可控性,但需承担高可用搭建、备份恢复、安全加固、参数调优等全栈运维责任;而云托管服务如阿里云瑶池数据库RDS,则通过内核增强、智能诊断、Serverless弹性、物理快照备份等能力,将复杂度封装为可控SLA。尤其在小应用(日活<1万、QPS<500、数据量<100GB)场景下,RDS显著降低DBA人力依赖与故障响应时间,使团队聚焦业务迭代而非数据库救火。本文围绕阿里云环境,结合MySQL兼容性与瑶

weixin_34331102的博客 352
上一篇: Git: remote: aborting due to possible repository corruption on the remote side. 的解决办法
下一篇: 拉起Docker容器初始化数据源时,报:org.postgresql.util.PSQLException: The connection attempt failed. 的解决办法
TechBro华仔
TechBro华仔 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄11年 5万+粉丝 430原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechBro华仔

日拱一卒无有尽,功不唐捐终入海

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值