You can change this value on the server by setting the max_allowed_packet' variable.

/ SpringBootMarkbug / 没有评论 / 249浏览

今天在使用JPA更新数据时,抛出了下面的错误:

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (9566446 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.

看日志的内容显示超出了范围,但我更新时明明只更新了几个字段而已为什么为报上面的错误呢?原因是在更新之前执行了一次JPA中findAllById方法,这个方法返回了一个列表信息,但这个列表信息中有一个字段存储的是json类型,并且这个字段中的json数据量非常大。所以就抛出了上面的错误。所以在遇到上面错误时,只要检查查询或者更新中的字段是否有数据量非常大的字段即可。


除此之外,在解决这个问题时,还遇到了JPA中save方法不更新的问题,虽然在网上查了很多解决方案,但都没有解决,所以,暂时用@Query注解方式解决了。如果以后遇到JPA中的save方法更新不成功时,可以先尝试@Query注解方式解决。