首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL Error 2006 (MySQL server has gone away) 解決:調大 max_allowed_packet

     編輯:MySQL 綜合教學

錯誤現象

匯入包含大欄位(BLOB/TEXT/長 SQL)的資料時,連線中斷並報錯:

ERROR 2006 (HY000): MySQL server has gone away

根因

MySQL 客戶端/伺服器通訊緩衝區預設 max_allowed_packet = 4MB(舊版 1MB)。當單次傳送封包超過此限制,伺服器主動斷開連線。

即時修復(無需重啟)

SET GLOBAL max_allowed_packet = 1073741824;  -- 1GB
-- 或
SET GLOBAL max_allowed_packet = 104857600;   -- 100MB

新 Session 即刻生效;進行中的連線需重連。

持久化配置

# /etc/my.cnf 或 /usr/local/mysql/my.cnf
[mysqld]
max_allowed_packet = 100M  # 視業務最大欄位大小調整,建議 64M~1G

修改後 service mysql restart 生效。

驗證

SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 104857600 |
+--------------------+-----------+

客戶端同步調整

  • mysqldump --max_allowed_packet=100M
  • mysql --max_allowed_packet=100M
  • 程式碼連線字串加入 MaxAllowedPacket=104857600(Connector/NET)或對應驅動參數

補充:Error 2013 (Lost connection during query)

同屬封包過大導致,同樣透過調大 max_allowed_packet 解決。若調大後仍報錯,檢查 net_read_timeout/net_write_timeout 及網路穩定性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved