问题
Caused by: com.mysql.jdbc.PacketTooBigException:
Packet for query is too large (1354 > 1024).
You can change this value on the server by setting the
max_allowed_packet' variable
分析
根据问题就能得知数据包的太大,无法接收。
mysql会根据配置限制server接受的数据包大小,尤其当大批量的数据插入和更新就会因为max_allowed_packet参数限制掉,导致失败。
查看mysql的max_allowed_packet参数
show VARIABLES like '%max_allowed_packet%';
一般默认配置是1M,根据需要调整大小就好了
调整方式有两种
方式一
修改mysql的配置文件
例如修改为:
max_allowed_packet=10M
修改完成后重新启动MySQL的服务
方式二
进入mysql server
在mysql 命令行中运行
set global max_allowed_packet = 1024*1024*10
然后关闭掉这此mysql server链接,再进入。
show VARIABLES like ‘%max_allowed_packet%’;
查看下max_allowed_packet是否编辑成功
【总结】
之前做批量插入的时候并没有遇到过这样的问题,还是业务量不够造成,所以以后做批量插入或者更新的时候注意将数据在系统内部做一个转换,例如每500条插入一次,诸如此类的操作。