异常处理_Packet for query is too large (1257 > 1024). You can change this value on the server by setting the max_allowed_packet' variable
异常特征:(访问网站后台报错如下)
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1257 > 1024). You can change this value on the server by setting the max_allowed_packet' variable. at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3291) ~[mysql-connector-java-5.1.18.jar:na] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1983) ~[mysql-connector-java-5.1.18.jar:na] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163) ~[mysql-connector-java-5.1.18.jar:na] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624) ~[mysql-connector-java-5.1.18.jar:na] at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127) ~[mysql-connector-java-5.1.18.jar:na] at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362) ~[mysql-connector-java-5.1.18.jar:na] at net.sf.log4jdbc.PreparedStatementSpy.execute(PreparedStatementSpy.java:417) ~[log4jdbc-1.2.jar:na]
解决方式(可能有的朋友这样并不能解决)
1)进入mysql查看 mysql> show variables like '%max_allowed_packet%'; +--------------------------+------------+ | Variable_name | Value | +--------------------------+------------+ | max_allowed_packet | 1024 | | slave_max_allowed_packet | 1073741824 | +--------------------------+------------+ 2 rows in set (0.00 sec) PS: max_allowed_packet这个是定义mysql服务器端和客户端在一次传送数据包的过程当中数据包的大小 定义过大,比如max_allowed_packet=8092,有可能服务器端太忙,来不及接收,或者网络太差,会容易造成丢包 定义过小,会因为客户端可能无法快速接收服务器端发过来的包,在访问资源时数据包太大而传送失败, 个人认为大小根据访问资源大小及访问量走 2)到mysql的bin目录下 [root@eRrsr bin]# mysqld --max_allowed_packet=30M 3)再次进入mysql查看 mysql> show variables like '%max_allowed_packet%'; +--------------------------+------------+ | Variable_name | Value | +--------------------------+------------+ | max_allowed_packet | 31457280 | | slave_max_allowed_packet | 1073741824 | +--------------------------+------------+ 2 rows in set (0.00 sec) 4)改动 /etc/my.cnf 有max_allowed_packet则改之,大小30M (自定) 5)重启mysql服务
----完----

浙公网安备 33010602011771号