Got a packet bigger than 'max_allowed_packet' bytes 或 MySQL server has gone away(封包過大導致連線斷開)。max_allowed_packet = 1M(1MB),對現代應用往往過小。
my.ini(安裝目錄或 C:\ProgramData\MySQL\MySQL Server X.Y\)/etc/my.cnf 或 /etc/mysql/my.cnf[mysqld] 區段新增/修改:[mysqld]
max_allowed_packet = 64M # 視業務最大欄位大小調整,建議 16M-256M
SET GLOBAL max_allowed_packet = 67108864; -- 64M (單位:位元組)
配合持久化寫入設定檔,確保重啟後生效。
mysql 客戶端:mysql --max-allowed-packet=64M ...mysqldump:mysqldump --max-allowed-packet=64M ...maxAllowedPacket、PHP PDO MYSQL_ATTR_MAX_BUFFER_SIZE)。net_buffer_length(初始緩衝)一起調優。