mysql插入太多数据导致MySQL server has gone away

本文介绍了在使用MySQL数据库时遇到的“MySQL server has gone away”错误,并详细解释了如何通过调整max_allowed_packet参数来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安利一篇我翻译的国外大牛的神经网络入门文章
最近在一次开发过程中,将数据写入mysql时候总是报MySQL server has gone away的错误,因为mysql就是本地启动的,而且从插入到报错整个过程时间很短,因此不可能是连接方面的timeout一类的问题。最后通过网上搜索,看到了遇到类似问题的帖子,参考作者的做法,问题得到了解决。
原因是max_allowed_packet参数导致的。按照官方解释增大这个参数可以使得从client到server端传递大数据时,系统能够分配更多的扩展内存来处理。
首先查看mysql max_allowed_packet的值

mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
1 row in set (0.00 sec)

可以看到默认是4M,我的数据达到了5M多,难怪报错。修改如下

mysql> set global max_allowed_packet=268435456;
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like 'max_allowed_packet';
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 268435456 |
+--------------------+-----------+
1 row in set (0.00 sec)

至此问题得到解决。另外如果重启mysql,这里的设置会被还原。如果想重启后不还原,可以打开 my.cnf 文件,添加max_allowed_packet = 256M即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值