Packet for query is too large (84 > -1).

ibatis工程使用resin配置mysql出现Packet for query is too large (84 > -1).错误。

windows下的resin配置连接mysql,常用的安全的做法是将数据库信息配置到conf目录下的resin.xml文件中。

因为resin连接mysql不是必须的,所以resin本身没有提供mysql-connector的jar包,需要自己加到resin目录下的lib里面,我加了个mysql-connector-java-5.1.45-bin.jar进去,然而在运行工程执行数据库查询操作的时候,却出现了问题,报如下错误:

1
2
3
4
5
6
7
8
9
org.springframework.dao.TransientDataAccessResourceException: SqlMapClient operation; SQL [];   
--- The error occurred while applying a parameter map.
--- Check the T_USER_INFO.selectByMap-InlineParameterMap.
--- Check the statement (query failed).
--- Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (84 > -1). You can change this value on the server by setting the max_allowed_packet' variable.; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the T_USER_INFO.selectByMap-InlineParameterMap.
--- Check the statement (query failed).
--- Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (84 > -1). You can change this value on the server by setting the max_allowed_packet' variable.

只进行查询却出现Packet for query is too large,而且查询的条件只有几个字母,网上搜了很多解答,都是说需要把mysql的max_allowed_packet参数调大,但是我通过show VARIABLES like '%max_allowed_packet%';查询的结果也很大,如果是参数过小,应该是提示大于数据库中设置的packet的值,而不应该报-1。

最后发现有个帖子说是mysql-connector-javajar包的版本问题,版本不能太高,随后我将mysql-connector-java-5.1.45-bin.jar换成mysql-connector-java-5.1.26-bin.jar,不再出现packet错误,问题解决。

可能是因为我用的是ibatis2.0版本的缘故,不支持太高的mysql连接jar版本,换成mysql-connector-java-5.1.40以下版本即可解决Packet for query is too large (84 > -1)问题。

作者

wonderomg

发布于

2018-03-15

更新于

2022-01-14

许可协议

评论