错误描述:

今天在手机端查看之前上线的项目时,突然报了下面的错误。再之后用电脑登陆,其他设备登陆都一直报这个错误。

错误信息:

### 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.的更多相关文章

  1. 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, 我是执行完后不用重启就 ...

  2. 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 ...

  3. 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 ...

  4. 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这个文件,打开 ...

  5. 服务器的日志一直报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 ...

  6. 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 ...

  7. 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 ...

  8. 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 ...

  9. mysql报错Packet for query is too large (12238 > 1024). You can change this value

    今天将项目部署到linux服务器的时候莫名其妙的报一些错误,可是在本地啥错没有,通过实时查看tomcat 的日志之后发现报错是: 实时查看日志: .先切换到:cd usr/local/tomcat5/ ...

随机推荐

  1. python基础===* 解包,格式化输出和print的一点知识

    python3中的特性: >>> name = "botoo" >>> print(f"my name is {name}" ...

  2. Bzoj-2301 [HAOI2011]Problem b 容斥原理,Mobius反演,分块

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2301 题意:多次询问,求有多少对数满足 gcd(x,y)=k, a<=x<=b ...

  3. bzoj 1191 超级英雄Hero

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1191 题解: 裸匈牙利,注意如果出现找不到增广路的情况就直接break #include& ...

  4. ASPxCheckBoxList控件获取selected项的text和value的方法

    设ASPxCheckBoxList的ClientInstanceName为list_ var needtext; for (var i = 0; i < list_.GetSelectedIte ...

  5. 2017百度春招<度度熊买帽子的问题>

    题目: 度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同.度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少? 数组中找到第三小的数字  注意边界条件 用STL中的set来 ...

  6. HIbernate学习笔记3 之 缓存和 对象的三种状态

    一.hibernate一级缓存 *  hibernate创建每个Session对象时,都会给该Session分配一块独立的缓冲区,用于存放Session查询出来的对象,这个分配给session的缓存区 ...

  7. mac系统命令行获取root权限

    刚上手mac本,对系统各种操作不熟,把过程记录下来. 使用内置命令行工具时遇到权限问题,有两种方法,第一种是在每行命令之前加上sudo,例如: 第二种是直接使用roor账户,但是mac系统默认没有ro ...

  8. [转载] Python itertools模块详解

    原文在这里,写的很详细,感谢原作者,以下摘录要点. itertools用于高效循环的迭代函数集合. 无限迭代器 迭代器 参数 结果 例子 count() start, [step] start, st ...

  9. 玩转树莓派 - 修改Raspbian软件源加快软件下载速度

    这是 meelo 原创的 玩转树莓派 系列文章 步骤1:登录到Raspbian的命令行界面 步骤2:修改Raspbian的软件源 软件源是Linux系统免费的应用程序安装仓库,很多的应用软件都会这收录 ...

  10. Win7下安装Oracle 10g

    首先下对版本,Oracle 10g支持Win7版(32位): 10203_vista_w2k8_x86_production_db.zip 10203_vista_w2k8_x86_productio ...