MySQL配置文件里有个参数max_allowed_packet定义的是客户端和服务端传输数据包的大小。
踩坑过程:最近我在新搭建的服务器上安装了MySQL。为了图方便,我将自己电脑上编辑好的my.ini
配置文件直接放到了服务器上的MySQL安装目录下。安装包里原本就含有一个my-default.ini
配置文件,当时我认为这个文件不会影响我自定义的配置,而且打开后发现里面并没有配置任何参数,所以就没太在意,想着以后可能用得上,就暂时留着了。
项目部署后一直运行正常,但突然有一天上午出现了Packet for query is too large
的错误。通过搜索资料,我很快找到了解决办法:在配置文件中添加max_allowed_packet=20971520
,并将这个值设置得非常大。
重启数据库后,项目运行了半天又报了这个错误。我使用SHOW VARIABLES LIKE '%max_allowed_packet%';
命令查看,发现max_allowed_packet
的值仍然是2048。明明刚刚改过,而且只有我有数据库的root权限,这让我感到很奇怪。检查my.ini
文件,我发现我设置的值还在那里,但无论执行多少次命令,max_allowed_packet
的值始终是2048。情急之下,我再次重启了数据库,项目这才恢复正常运行。
晚上我查阅了更多资料,才了解到MySQL在启动时会按照特定的顺序加载配置文件,如果存在多个配置文件,后面的配置文件会覆盖前面的配置。我恍然大悟,原来是我留下的my-default.ini
文件干扰了我自定义的配置。
通过这次踩坑经历,我明白了优化配置的重要性。对于不再需要的默认文件或配置,应该及时删除或移动到其他地方,以免干扰到自定义的配置。同时,也要确保对MySQL的配置文件加载顺序有清晰的了解,这样才能避免类似的问题再次发生。