com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1155209 >
1048576). You can change this value on the server by setting the
max_allowed_packet' variable.
mysql根据配置文件会限制server接受的数据包大小。
有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。
查看目前配置
show VARIABLES like '%max_allowed_packet%';
以上说明目前的配置是:1M
修改方法
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。(在[mysqld]下加上max_allowed_packet=16M,保存重启mysql后)
max_allowed_packet = 20M
如果找不到my.cnf可以通过
mysql --help | grep my.cnf
去寻找my.cnf文件。
重启mysql
1.点击“开始”->“运行”(快捷键Win+R)
2.启动:输入 net stop mysql
3.停止:输入 net start mysql
max_allowed_packet 参数说明:
参数的作用是,用来控制其通信缓冲区的最大长度。
注意:该参数对应的分配内存是每连接独占!
如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。
所以,对于内存在4GB左右的服务器推荐设置为6-8M。