mysql报错 packet too large

mysql报错 packet too large

问题

当执行批量插入时,数据量过大会导致异常。

通信数据包是发送到MySQL服务器的单个SQL语句,发送到客户端的单个行,或从主复制服务器发送到从属服务器的二进制日志事件。当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的数据包时 ,它会发出ER_NET_PACKET_TOO_LARGE错误并关闭连接。对于某些客户端,如果通信包太大,您也可能会收到 Lost connection to MySQL server during query 错误。
可以传输到MySQL 5.6服务器或客户端的最大可能数据包是1GB。

服务器的默认 max_allowed_packet值为4MB(MySQL 5.6.6之前为1MB)。可以通过sql语句查询。

1
show VARIABLES like '%max_allowed_packet%'

如果服务器需要处理大查询(例如,如果您正在使用大BLOB列),则可以增加此值。例如,要将变量设置为16MB,请按以下方式启动服务器:

1
mysqld --max_allowed_packet=16M

还可以使用选项文件进行设置,在 my.ini 中添加:

1
2
[mysqld]
max_allowed_packet=16M

注意,修改配置文件,不要忘了重启。

如果不想修改配置文件,也可以通过以下命令:

1
SET GLOBAL max_allowed_packet=1073741824
-------------本文结束感谢您的阅读-------------
坚持分享,您的支持将鼓励我继续创作!
0%