Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4467936 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.
; Packet for query is too large (4467936 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.; nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4467936 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:110) ~[spring-jdbc-5.2.9.RELEASE.jar!/:5.2.9.RELEASE]
解决:
错误信息 com.mysql.jdbc.PacketTooBigException: Packet for query is too large 表示你的 MySQL 查询生成了一个大于 max_allowed_packet 设置值的数据包。max_allowed_packet 是 MySQL 服务器可以处理的最大数据包大小,如果查询结果或要发送给服务器的数据超过了这个大小,就会出现这个异常。
要解决这个问题,你需要增加 MySQL 服务器上的 max_allowed_packet 配置值。以下是如何进行调整的步骤:
编辑 MySQL 配置文件:
找到 MySQL 的配置文件,通常名为 my.cnf 或 my.ini,位于 /etc/mysql/(Linux)或 MySQL 安装目录下(Windows)。
增加 max_allowed_packet 设置:
在 [mysqld] 部分添加或修改 max_allowed_packet 设置。例如,要将其设置为 64MB,可以添加以下行:
[mysqld]
max_allowed_packet = 67108864
这里使用的是字节为单位,64MB 等于 67108864 字节。
重启 MySQL 服务:
保存配置文件后,重启 MySQL 服务以使更改生效。在 Linux 上,你可以使用以下命令之一:
bash
sudo systemctl restart mysql
或者
bash
sudo service mysql restart
取决于你的系统和 MySQL 版本。
检查更改:
登录到 MySQL 服务器并检查新的设置:
sql
SHOW VARIABLES LIKE 'max_allowed_packet';
重新运行查询:
更改 max_allowed_packet 设置后,尝试重新运行之前失败的查询。