Mysql com.mysql.jdbc.PacketTooBigException 的解决方案

来源:互联网 发布:海尔是国企吗 知乎 编辑:程序博客网 时间:2024/06/14 15:55

出现情况:当一次插入30000条数据时,SQL拼装过长。

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (3933378 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3915)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2598)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2825)at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2156)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2459)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2376)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2360)


方案一:改Mysql配置

正如报错提示那样,改my.ini配置,默认是1M,该大点咯。



方案二:优化SQL语句。

写了那么多的SQL,能出现那么长的SQL,一般都是Insert。

将SQL分段就好了。

我这里是Insert 1000个数据就生成一个SQL。



不管是JAVA,还是PHP,都有可能遇到这种SQL过长的情况。

个人认为,还是SQL优化的方案要好一点。

0 0
原创粉丝点击