com.mysql.jdbc.PacketTooBigException: Packet for query is too large (3158064)问题解决
在做查询,插入数据库操作时,报了以上错误,还有out of memery heap hacp ,原因是mysql的max_allowed_packet设置过小引起的,一般默认设置的是1M,自己改为20M就ok了!
mysql根据配置文件会限制server接受的数据包大小。
有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。查看目前配置步骤
1、登陆mysql服务
2、show VARIABLES like '%max_allowed_packet%';
显示的结果为:
在windows系统下,mysql的安装目录下的my.ini文件中配置的也是1M
以上说明目前的配置是:1M
修改方法
方法1
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 20M
如果找不到my.cnf可以通过
mysql --help | grep my.cnf
去寻找my.cnf文件。
修改了my.ini配置文件后,重启mysql服务,不然比起作用发(所有该配置的都要重启服务),重启后在查看结果如下:
方法2
进入mysql server在mysql 命令行中运行
set global max_allowed_packet = 2*1024*1024*10
然后关闭掉这此mysql server链接,再进入。
show VARIABLES like '%max_allowed_packet%';
查看下max_allowed_packet是否编辑成功
经验总结:
不管是第一种方法还是第二种方法我们都应该,在修改后关闭服务,再次启动服务,如果是第二种方法还得要注意一下,就是修改后关闭此mysql server链接,再进入。
两种方式都已测试过,没问题!!!
参考文档:
http://www.360doc.com/content/11/0214/17/4171006_93014351.shtml
http://blog.csdn.net/wpekin/article/details/5661625