错误描述:

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

错误信息:

### 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. [New learn] NSOperation基本使用

    1.简介 NS(基于OC语言)是对GCD(基于C语言)的封装,让开发者能够更加友好的方便的去使用多线程技术. 2.NSOperation的基本使用 NSOperation是抽象类,所以如果要使用NSO ...

  2. yum安装的Apache的各种配置文件的位置

    //配置文件 /etc/httpd/conf /etc/httpd/conf.d /etc/httpd/conf.d/README /etc/httpd/conf.d/proxy_ajp.conf / ...

  3. JS怎么刷新当前页面

    JS怎么刷新当前页面 reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从 ...

  4. 【python】资料记录

    今天看了一些关于python的知识: 1.装饰器:https://www.zhihu.com/question/25950466/answer/31731502 2.*args的用法:http://b ...

  5. IntelliJ IDEA SpringBoot 使用第三方Tomcat以及部署

    花了半天时间终于成功,记录以备查阅. 一.第三方Tomcat部署 部署部分参考的是:把spring-boot项目部署到tomcat容器中 目标:把spring-boot项目按照平常的web项目一样发布 ...

  6. centos7 安装rlwrap

    https://blog.csdn.net/zhjmozhi/article/details/78347216

  7. AC日记——大爷的字符串题 洛谷 P3709

    大爷的字符串题 思路: 莫队,需开O2,不开50: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 20000 ...

  8. #pragma once 与 #ifndef

    #pragma once:保证头文件只被编译一次.这种方式,是微软编译器独有的,也是后来才有的,所以知道的人并不是很多,用的人也不是很多,因为他不支持跨平台.如果你想写跨平台的代码,最好使用上一种.这 ...

  9. IIS 安装问题

    今天去客户现场的内网环境安装IIS,结果第一步尴尬,是虚拟机搭出来,安装时没有源文件,然后让那边运维给系统盘挂上了,第一步通过了,可以安装了,但是由于之前也没吝啬,啥都点了,这次就合计不用那么多,结果 ...

  10. windows10 自带的OpenSSH Client(Beta)

    我不知道其他版本有没有 ,我是windows10 专业版,版本1709,OS内部版本16288.1 安装过程: 1.我的电脑上面的卸载或更改程序 2.管理可选功能 3.添加功能 4.重启电脑,搞定 O ...