匯入包含大欄位(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=100Mmysql --max_allowed_packet=100MMaxAllowedPacket=104857600(Connector/NET)或對應驅動參數同屬封包過大導致,同樣透過調大 max_allowed_packet 解決。若調大後仍報錯,檢查 net_read_timeout/net_write_timeout 及網路穩定性。