mysql参数设置--max_allowed_packet 值如何调整?
概述
MySQL根据配置文件会限制Server接受的数据包大小,有时候大的插入和更新会受 max_allowed_packet 参数限制,导致大数据写入或者更新失败。
下面介绍下最近碰到的问题及修改该参数的方法。
问题
因为最近的运营系统运行报错,查看tomcat日志提示The driver has not received any packets from the server,属于mysql数据库限制Server接受的数据包问题。
mysql数据库在写入大数据时,因为默认的配置太小,插入和更新操作会因为 max_allowed_packet 参数限制,而导致失败。修改增加max_allowed_packet=100M后报错解决。
查看目前配置:
mysql> show VARIABLES like 'max_allowed_packet';

max_allowed_packet的单位为字节:
-- 转化为Mb,就是1024Mb mysql> select 1073741824/1024/1024;

修改方法1-配置文件修改
可以编辑my.cnf,在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 100M
修改my.cnf,配置要重载才能生效
这里大家根据需要配置就行了。
修改方法2-命令修改
参数生效范围为global,不是session. 如果服务器重启设置会失效
set global max_allowed_packet = 1024*1024*1024
这里还是比较推荐第一个方法,如果实在不想重启可以用这个方式。

max_allowed_packet 值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败,为了数据完整性,需要考虑到事务因素。
相关推荐
-
PHP8种变量类型的详细讲解2025-02-22 00:32:24
-
php+apache 和 php+nginx的区别2025-02-22 00:21:27
-
PHP:与workerman结合实现定时任务2025-02-22 00:15:57
-
Nginx的Rewrite规则与实例2025-02-22 00:15:39
-
MySql中身份证字段的简单脱敏介绍2025-02-22 00:15:36