1153: Got a packet bigger than 'max_allowed_packet' bytes(收到的数据包大于 'max_allowed_packet' 字节)
MySQL含义
客户端或服务器尝试发送大于允许的最大数据包大小(max_allowed_packet)的数据包。通常发生在大型 BLOB/TEXT 值或非常大的批量 INSERT 中。
原因
插入非常大的 BLOB/TEXT 数据;巨大的单条 INSERT 或多行批量 INSERT;返回大结果的查询;max_allowed_packet 值过小;用 mysqldump 导入大行。
解决方法
增大 max_allowed_packet(服务器和客户端两侧):SET GLOBAL max_allowed_packet = 67108864;(64MB)然后重新连接。要永久生效,在 my.cnf 的 [mysqld] 下添加 max_allowed_packet = 64M。将大型批量操作拆分为更小的批次。评估是否确实需要存储非常大的值。
同一数据库的其他条目
- 1227Access denied; you need (at least one of) the PRIVILEGE(访问被拒绝;需要(至少一项)PRIVILEGE 权限)
- 3730Cannot drop table referenced by a foreign key constraint(无法删除被外键约束引用的表)
- 2013Lost connection to MySQL server during query(查询期间与 MySQL 服务器的连接丢失)
- 1969MariaDB: Query execution was interrupted (max_statement_time exceeded)(MariaDB:查询执行被中断(超出 max_statement_time))
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed(连接已被终止)
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option(以 --read-only 选项运行)
- 1836ER_READ_ONLY_MODE: Running in read-only mode(以只读模式运行)