1. 程式人生 > 其它 >mysql 中com.mysql.jdbc.PacketTooBigException 解決辦法

mysql 中com.mysql.jdbc.PacketTooBigException 解決辦法

技術標籤:mysqlERRORs

問題: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