首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL longblob 欄位插入資料超過 max_allowed_packet 解決方案

     編輯:MySQL 資料庫相關知識

在 MySQL 5.5 中,max_allowed_packet 預設僅 1 MB,當插入 LONGBLOB 或大量文字資料時,常遇到:

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

正確修改位置

務必在 [mysqld] 區塊下設定,不要 放在 [client] 或 [mysql],否則無效:

[mysqld]
max_allowed_packet = 1024M

生效方式

  1. 修改 my.cnf / my.ini 後重啟 MySQL 服務。
  2. 或動態調整(無需重啟,但重啟後失效):
    SET GLOBAL max_allowed_packet = 1073741824;(單位為 Bytes)。

驗證修改

SHOW VARIABLES LIKE 'max_allowed_packet';

客戶端同步調整

JDBC 連線字串可加參數:?maxAllowedPacket=1073741824;
mysqldump 匯出時加 --max_allowed_packet=1G。

提醒

  • 過大數值會增加記憶體壓力,建議按實際最大單筆資料略微調大即可。
  • 若使用複製(Replication),主從都需同步修改。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved