mysql根据配置文件会限制server接受的数据包大小。有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败。
今天博主为了这个鼓捣了一下午。mysql默认接受data最大是1M,也就是超过了就会失败,mysql官方也有这方面的说明:插眼传送,在这里写一下两种解决方法,增加或者减小随项目的需要。
1.直接在命令行中运行命令
set global max_allowed_packet = 2*1024*1024*10; 或者set global max_allowed_packet = 16M;(博主是用的后面这个)
然后输入命令 show VARIABLES like '%max_allowed_packet%'; 就可以看到自己改的值。
这种方法管用是管用,但是不能重启mysql服务,一旦重启mysql,会自动恢复成默认值 1M,所以有些用这种方法改了的,过短时间又恢复默认值,不是bug也不是什么黑客入侵,而是因为重启了mysql。
2.修改mysql的配置文件(关于如何找到当前正在使用的配置文件,参考这篇文章:插眼传送)
max_allowed_packet = 16M
找到他把后面的值改掉,重启mysql就永久生效了。