问题: Packet for query is too large (1786 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
错误描述:
今天在手机端查看之前上线的项目时,突然报了下面的错误。再之后用电脑登陆,其他设备登陆都一直报这个错误。
错误信息:
### Error querying database. Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1036 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1036 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
; SQL []; Packet for query is too large (1036 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.; nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1036 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
主要错误信息:Packet for query is too large (1036 > 1024)
出错的原因就是表面的意思:请求包的大小是1036,而mysql设置的允许的最大包的大小是1024,因此出错。
解决思路:
在抛出的异常信息中已经给出了解决方案:You can change this value on the server by setting the max_allowed_packet' variable.
也就是设置下“max_allowed_packet”的值就好了[什么是max_allowed_packet:MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致大数据写入或者更新失败。
]
具体操作:
(1)可以先看下“max_allowed_packet”的值
show VARIABLES like '%max_allowed_packet%';

可以看出我当前的值是1024(修改之前的默认值)
(2)下面就是修改
遇到这个问题后,看了不少博客,说的都是下面的两种解决方案:
1)命令行临时修改(不需要重启mysql)
SET GLOBAL max_allowed_packet=1073741824
2)修改配置文件,可以长久生效的(修改完需要重启mysql)
找到配置文件的目录
mysql –help | grep my.cnf
修改配置文件 (my.cnf)
max_allowed_packet = 20M
我尝试了第一种方法,可以执行成功,但是,修改完依然报错,再通过sql查看时发现值没变。
(值没变的原因:
SET GLOBAL max_allowed_packet=1073741824
注意里面的"GLOBAL",设置的范围是GLOBAL ,但是查看的时候是show VARIABLES like '%max_allowed_ 并没有GLOBAL ,
通过
show GLOBAL VARIABLES like '%sql_mode%';
发现

值确实被修改了
)
详细内容见大佬简书:https://www.jianshu.com/p/629685b97030
注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。
3)我选择了比较稳妥的方法,修改配置文件,他然后重启mysal、
原以为这样就不会有问题了,但是!!!在大约一个月后又报了这个错,max_allowed_packet的值又变成了1024,重新打开配置文件,发现里面的值还是20M啊,但是通过命令查询的时候却发现查出来的值是1024,然后我就把mysql重启了一下,在去查询的时候发现配置文件里的配置生效了。由于当时比较忙,也没去查生效值变为1024的原因。之后这个错误又出现了三次,每次都是重启服务器解决。直到有一天数据库中了勒索病毒。库被删了,让用比特币换。才意识到问题的严重性。
具体的才可以查看下面这篇博客:
Mysql max_allowed_packet自动重置为1024(黑客入侵?)
问题: Packet for query is too large (1786 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.的更多相关文章
- mysql Packet for query is too large (2036 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
解决方法: 打开控制台,输入下面语句,执行 set global max_allowed_packet = 20*1024*1024; 网上说要重启 mysql server, 我是执行完后不用重启就 ...
- Packet for query is too large (1660 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
原因是mysql 默认允许的 数据报包 是 1M 设置大一些就可以了 centos 下面 /ect/my.cnf 文件里面 加入或者修改 下面的参数 [mysqld] max_allowed_pa ...
- Linux服务器上日志报com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1783 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
在做查询数据库操作时,报了以上错误,还有out of memery heap hacp ,原因是MySQL的max_allowed_packet设置过小引起的,我一开始设置的是1M,后来改为了20M ...
- com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1680 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
这个错误是由于mysql的一个系统参数max_allowed_packet设置的值过小引起的 解决这个错误的方法就是修改这个参数的值, linux系统中我们在etc目录下找到my.cnf这个文件,打开 ...
- 服务器的日志一直报Packet for query is too large (7632997 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.的解决方法
服务器的日志一直报Packet for query is too large (7632997 > 4194304). You can change this value on the serv ...
- MYSQL Packet for query is too large (12054240 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.
MYSQL Packet for query is too large (12054240 > 4194304). You can change this value on the server ...
- Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (16944839 > 16777216). You can change this value on the server by setting the max_allowed_packet' variable.
今天发现task微服务的error日志报如下错误: Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large ...
- Mysql报错:Packet for query is too large (1121604 > 1048576).You can change this value on the server by setting the max_allowed_packet variable
看错误信息,发现1048576个字节,正好是1*1024*1024byte,也就是1Mb. 这正是mysql默认的max_allowed_packet值. 使用sql语句: show VARIABLE ...
- mysql报错Packet for query is too large (12238 > 1024). You can change this value
今天将项目部署到linux服务器的时候莫名其妙的报一些错误,可是在本地啥错没有,通过实时查看tomcat 的日志之后发现报错是: 实时查看日志: .先切换到:cd usr/local/tomcat5/ ...
随机推荐
- 我用.htaccess做了些什么?
1.防图片盗链,减轻流量压力: 2.index.php 301转向到域名,有利于PR权重集中: 3.其它还不会,慢慢来…… 我是如何做的? <IfModule mod_rewrite.c> ...
- FISCO-BCOS平台共识
FISCO-BCOS 应用于区块链的多节点并行拜占庭容错共识算法 看了下微众平台的wiki共识知识 学习下 ()内是自己的思考 参考: https://github.com/FISCO-BCOS/W ...
- 2015多校第6场 HDU 5361 并查集,最短路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5361 题意:有n个点1-n, 每个点到相邻点的距离是1,然后每个点可以通过花费c[i]的钱从i点走到距 ...
- Kettle提高输入输出数据总结
1 mysql在数据连接是可以通过设置一下三个三处的方式 useServerPrepStmts=false useCursorFetch=true useCompression= ...
- tornado 模版
tornado 模版语法 取消转义 : 取消项目转义 :autoescape = None 取消模版转义:{% autoescape None %} 取消行转义 :{% raw bd %} 强制转 ...
- windows下github 出现Permission denied (publickey)
github教科书传送门:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 再学习到 ...
- HDR文件格式简介及其读写函数
转自:http://blog.csdn.net/lqhbupt/article/details/7828827 1.HDR简介HDR的全称是High-DynamicRange(高动态范围).在此,我们 ...
- [转载]Python命令行参数学习
转载自: http://blog.163.com/weak_time/blog/static/25852809120169333247925/ Python的命令行参数,提供了很多有用的功能,可以方便 ...
- NOI2014 魔法森林 day1t2 SPFA
这道题做法还是很多的,至少有人用最优性剪枝当场A掉了.我只有50分的暴力分(写丑了),SB我不会LCT,先写一下SPFA的神思路做法(说白了还是我SB),LCT以后定补.ORZ想出来的人(hq大神). ...
- jquery中的done和always解决ajax问题
昨天写一个跨域请求json数据的实例.遇到传值问题,尝试了各种方式都不行,后来发现,同一个地址,同一个ip请求次数频繁传值相同的话,ajax会默认跟一个&?时间戳,这就导致我传过去的值是错误的 ...