mysql 中com.mysql.jdbc.PacketTooBigException 解決辦法
阿新 • • 發佈:2020-12-10
問題:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (23588610 > 20971520). You can change this value on the server by setting the max_allowed_packet’ variable.
原因: 一次性插入的資料超過了mysql 預設的server接收的資料包大小,因此需要調整mysql 預設的server接收的資料包大小。
-
MySQL會根據配置檔案限制server接收的資料包大小
-
在執行比較大資料插入或者更新的時候,會根據配置檔案“max_allowed_packet ”引數所限制
解決方案:
修改配置,即是擴大配置限制
1.檢視配置
- 進入資料庫,執行如下查詢,檢視MySQL配置
#show VARIABLES like '%max_allowed_packet%'; mysql> show variables like '%max_allowed_packet%'; +--------------------------+------------+ | Variable_name | Value | +--------------------------+------------+ | max_allowed_packet | 20971520 | | slave_max_allowed_packet | 1073741824 | +--------------------------+------------+ 2 rows in set (0.00 sec)
2、修改配置
- 修改配置,即是擴大配置限制,將原配置20M調整為40M
#臨時設定為40M mysql> set global max_allowed_packet = 4*1024*1024*10; Query OK, 0 rows affected (0.00 sec) #關閉資料庫連線後,重新連線資料庫 #檢視配置是否生效 mysql> show variables like '%max_allowed_packet%'; +--------------------------+------------+ | Variable_name | Value | +--------------------------+------------+ | max_allowed_packet | 41943040 | | slave_max_allowed_packet | 1073741824 | +--------------------------+------------+ 2 rows in set (0.00 sec)
3、修改mysql配置檔案,永久生效
max_allowed_packet = 40M