ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes
典型場景:批量 INSERT 超大 SQL、導入含大字段(BLOB/TEXT/JSON)數據、存儲過程構建超長動態 SQL。
max_allowed_packet 限制 **單次客戶端-服務器通信包的最大體積**,雙向生效:
# my.cnf / my.ini [mysqld] max_allowed_packet=256M # 視業務調整,建議 64M-1G [client] max_allowed_packet=256M # 客戶端也需同步調大,否則 mysqldump 等工具仍受限
重啟服務生效。
SET SESSION max_allowed_packet=1073741824; -- 1G
| 工具 | 參數 | 示例 |
|---|---|---|
| mysql 命令列 | --max-allowed-packet | mysql --max-allowed-packet=256M -u root -p |
| mysqldump | --max-allowed-packet | mysqldump --max-allowed-packet=256M db > dump.sql |
| MySQL Workbench | Preferences → SQL Editor → Max Packet Size | 設置 256M |
| JDBC | 連接屬性 | maxAllowedPacket=268435456 (Connector/J 8.0+) |
SHOW VARIABLES LIKE 'max_allowed_packet' 已生效。net_buffer_length(默認 16KB,通常無需調整)。