问题: 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/ ...
随机推荐
- Codeforces Round #483 (Div. 1) 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. 为了证明一下我又来更新了,写一篇简要的题解吧. 这场比赛好像有点神奇,E题莫名是道原题,导致有很多选手直接过掉了(Claris 表演24s过题 ...
- jq 浏览器窗口大小发生变化时
当调整浏览器窗口的大小时,发生 resize 事件: $(selector).resize(); 实例 对浏览器窗口调整大小进行计数: $(window).resize(function() { $( ...
- python实战===国内很简单实用的一些开源的api以及开源项目
原创 2017年03月25日 15:40:59 标签: api / 开源项目 / app / 免费接口 声明 以下所有 API 均由产品公司自身提供,本人皆从网络获取.获取与共享之行为或有侵犯产品 ...
- monkey测试===如何获取android app的Activity
方法一(推荐): 手机连接adb,手机界面在需要取得activity的界面. 推荐使用该命令: adb shell dumpsys activity top | findstr ACTIVITY 获取 ...
- Linux 日志系统及分析
简介 在Centos 7.x / RHEL 7.x 的版本,系统日志是由一个名为 rsyslog的服务管理的,默认的日志守护进程为 rsyslog , rsyslog 是 syslog 的升级版本,默 ...
- 数据库SQL实战(1)
1.查找最晚入职员工的所有信息: CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, ` ...
- Foreach与迭代器
Foreach与迭代器 Foreach语句可以用于数组和集合的遍历.之所以能够工作,是因为Java SE5引入了新的被称为Iterable的接口,该接口中包含一个能够产生Iterator的iterat ...
- php上传文件限制
客户端限制(客户端限制在实际上是无法阻止上传): 通过表单隐藏域限制上传文件的最大值 <input type=’hidden’ name=’MAX_FILE_SIZE’ value=’字节数’ ...
- hdu 3488(KM算法||最小费用最大流)
Tour Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
- ibatis的动态Mapped Statement 标签
动态Mapped Statement 直接使用JDBC 一个非常普遍的问题是动态SQL.使用参数值.参数本身和数据列都是动态的SQL,通常非常困难.典型的解决方法是,使用一系列if-else 条件语句 ...