### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.

; SQL []; Packet for query is too large (1169 > 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 (1169 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.

我是进入到查看数据库的:

show VARIABLES like '%max_allowed_packet%';

太小导致出错。

在linux下,进入到mysql安装目录下:

进入到:

/usr/local/mysql,找到my.cnf,增加一行

max_allowed_packet = 20M

故障现象:数据存储的时候报ERROR: Packet for query is too large (2034> 1024). You can change this value on the server by setting the max_allowed_packet' variable.

排查过程:从报错看是 mysql的 max_allowed_packet参数值设置太少了,用show VARIABLES like '%max_allowed_packet%';查看,显示的是1024,这当然就有问题了,超过1024就存不了,于是在/etc/my.cnf文件中【mysqld]下面加上max_allowed_packet=10M,执行service
mysql restart ,再用show VARIABLES like '%max_allowed_packet%'查,生效了!再观察数据存储也没问题了!以为问题就此解决,结果是第二天发现又报这个错,用show VARIABLES like '%max_allowed_packet%'查看,奇怪了,有变成1024了!好烦心!继续查资料,说是内存不足的问题,导致MySQL自动重新设置参数,于是top查看,发现 Java占了 3.2G,mysql占了600+M,总共4G,的确有可能!于是把jvm的-Xms设置为2G,再观察几天,这次真的解决了!
 
经验教训:不要把一台服务器的内存都用光了,要预留多点内存,另外mysql和Java程序最好分开部署。

重启mysql:

service mysql restart

然后在查询:

好了,以上解决!

在做查询数据库操作时,报了以上错误,还有out of memery heap hacp ,原因是MySQL的max_allowed_packet设置过小引起的,我一开始设置的是1M,后来改为了20M

mysql根据配置文件会限制server接受的数据包大小。

有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。

查看目前配置
show VARIABLES like '%max_allowed_packet%';

显示的结果为:

+--------------------+---------+ | Variable_name      | Value   | +--------------------+---------+ | max_allowed_packet | 1048576 | +--------------------+---------+

以上说明目前的配置是:1M

修改方法
1) 方法1
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 20M
如果找不到my.cnf可以通过

mysql --help | grep my.cnf

去寻找my.cnf文件。
2) 方法2

(很妥协,很纠结的办法)
进入mysql server
在mysql 命令行中运行
set global max_allowed_packet = 2*1024*1024*10
然后关闭掉这此mysql server链接,再进入。
show VARIABLES like '%max_allowed_packet%';
查看下max_allowed_packet是否编辑成功

经验总结:
在很多台机器上用方法一都没问题,但2011年11月14日遇到一台机器死活都不成功,
使用命令行方式:set global max_allowed_packet = 16M;
也不行,但使用
set global max_allowed_packet = 2*1024*1024*10;
成功了,很是郁闷
问题终于找出来了,不是方法的问题,是设置完成后要把命令行退出重新登录查看,看来系统变量的值在登录后会缓存。但在这台机器上使用配置INI文件。

参考文档:
http://www.360doc.com/content/11/0214/17/4171006_93014351.shtml
http://hi.baidu.com/jgs2009/blog/item/2de0701601186202c93d6dfd.html
http://www.cnblogs.com/phpfans2012/archive/2012/3/2.html
http://blog.csdn.net/wpekin/article/details/5661625
http://www.360doc.com/content/11/0214/17/4171006_93014351.shtml

如果找不到my.cnf文件:

用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在点有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL,
解决方法,只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。

此时可以通过以下修改:

MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。

查看目前配置:

复制代码代码如下:
show VARIABLES like '%max_allowed_packet%';

显示的结果为:

复制代码代码如下:
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+ 

以上说明目前的配置是:1M

修改方法

1、修改配置文件

可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。

复制代码代码如下:
max_allowed_packet = 20M

如果找不到my.cnf可以通过

复制代码代码如下:
mysql --help | grep my.cnf

去寻找my.cnf文件。
linux下该文件在/etc/下。

2、在mysql命令行中修改

在mysql 命令行中运行:

复制代码代码如下:
set global max_allowed_packet = 2*1024*1024*10

然后退出命令行,重启mysql服务,再进入。

复制代码代码如下:
show VARIABLES like '%max_allowed_packet%';

查看下max_allowed_packet是否编辑成功

注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。

重启mysql语句:

一、启动方式

1、使用 service 启动:service mysqld start

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start

3、使用 safe_mysqld 启动:safe_mysqld&

二、停止

1、使用 service 启动:service mysqld stop

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

3、 mysqladmin shutdown

三、重启

1、 使用 service 启动:service mysqld restart

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
提问 编辑摘要

如何启动/停止/重启MySQL
一、 启动方式

1、使用 service 启动:service mysqld start

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start

3、使用 safe_mysqld 启动:safe_mysqld&

二、停止

1、使用 service 启动:service mysqld stop

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

3、 mysqladmin shutdown

三、重启

1、使用 service 启动:service mysqld restart

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024)的更多相关文章

  1. nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1044 > 1024

    HTTP Status 500 - type Exception report message description The server encountered an internal error ...

  2. 【问题解决:Mysql操作容量限制问题】Error updating database. Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1082 > 1024)

    在做查询数据库操作时,报了以上错误,还有out of memery heap hacp ,原因是mysql的max_allowed_packet设置过小引起的,我一开始设置的是1M,后来改为了20M ...

  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 (4593 > 1024)

    修改 my.conf ,增加max_allowed_packet=8M window中, 进入mysql的 bin目录 执行  :修改 my.conf ,增加max_allowed_packet=8M

  5. nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1109 > 1024

    MySQL的一个系统参数:max_allowed_packet >mysql -u root -p //root登录 1. 查看系统参数:show VARIABLES like '%max_al ...

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

  7. MySQL异常:com.mysql.jdbc.PacketTooBigException: Packet for query is too large

    ### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024). You ...

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

  9. 解决com.mysql.jdbc.PacketTooBigException: Packet for query is too large

    在做查询数据库操作时,报了以上错误,还有out of memery heap hacp ,原因是MySQL的max_allowed_packet设置过小引起的,我一开始设置的是1M,后来改为了20M ...

随机推荐

  1. MyBatis对于Java对象里的枚举类型处理

    平时咱们写程序实体类内或多或少都会有枚举类型属性,方便嘛.但是mybatis里怎么处理他们的增删改查呢? 要求: 插入的时候,会用枚举的定义插入数据库,我们希望在数据库中看到的是数字或者其他东西: 查 ...

  2. Office办公 Winrar如何批量把每个文件夹分别压缩成不同的压缩包

    右击很多文件夹,添加到压缩文件,然后在文件中勾选把每个文件放到单独的压缩文件中即可  

  3. android中RecyclerView控件实现瀑布流布局

    本文是在之前文章的基础上做的修改:android中RecyclerView控件的使用 1.修改列表项news_item.xml: <?xml version="1.0" en ...

  4. Mac WIn7 QQ聊天记录互导 聊天记录合并

    也许等哪天老了回过头来看看.说不定还有一丝欢乐. 有几个方法可以实现 一.dropbox数据同步 二.QQ会员 三.下面方法 1.因为现在的Mac QQ还不支持聊天记录的导入导出.所以只能手动了 如果 ...

  5. Spring-boot加载resources下的文件

    加载方式: FileInputStream keyStoreIn = new FileInputStream(ResourceUtils.getFile("classpath:ca/clie ...

  6. scala VS python2 操作shell对比例子

    Scala: /** * Created by sunxu on 2015/9/30. */ import scala.sys.process._ import java.io.File //在相应目 ...

  7. mint 设置无线 AP

    所需软件: sudo apt-get install hostapd 1. 创建 hostapd 的 configure 文件 新建 hostapd.conf 文件,存放位置任意,与后面修改的路径一致 ...

  8. 使用go语言解析xml

    操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 问题描述 现有一个自动报障程序,如果服务出错会自动给指定人发送邮件,配置文件内容如下(default.xml): <?xml ...

  9. Linux文件的软链接和硬链接

    1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link).还有一种被称为符号链接(Symbolic Link).默认情况下.ln命令产生硬链接. 1.1索引节点 索引节点是 ...

  10. ETL面试题

    1. What is a logical data mapping and what does it mean to the ETL team? 什么是逻辑数据映射?它对ETL项目组的作用是什么? 答 ...