数据库在批量插入的时候报了下面的错误
You can change this value on the server by setting the 'max_allowed_packet' variable.
; Packet for query is too large (5,975,630 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.;
原因 max_allowed_packet表示MySQL Server或者客户端接收packet的最大大小,packet即数据包,MySQL Server和客户端都有这个限制。
查看 mysql 的 max_allowed_packet
show variables like '%max_allowed_packet%'
输出如下
+----------------------------+------------+
| Variable_name | Value |
+----------------------------+------------+
| max_allowed_packet | 67108864 |
| mysqlx_max_allowed_packet | 67108864 |
| replica_max_allowed_packet | 1073741824 |
| slave_max_allowed_packet | 1073741824 |
+----------------------------+------------+
上面value的单位是字节数,1兆等于1024 * 1024 = 1048576字节,所以 67108864 字节就是 64M.
修改 max_allowed_packet
通过sql修改(不推荐)
SET GLOBAL max_allowed_packet = 16777216;
但是这个修改在mysql重启后就丢失了。而且这个修改后,你需要先断开一下数据库连接,然后在重新查询才能看看到修改
通过配置文件修改
在MySQL 8.1.0版本中,使用Homebrew安装MySQL,则 my.cnf 文件位于/usr/local/etc/my.cnf
中
添加如下配置
max_allowed_packet = 8M
修改完成记得重启一下