【mysql】更新数据库的 max_allowed_packet 参数

Description

When a MySQL client or the mysqld server receives a packet bigger than max_allowed_packet bytes, it issues an ER_NET_PACKET_TOO_LARGE error and closes the connection. With some clients, you may also get a Lost connection to MySQL server during query error if the communication packet is too large.

官网解释,也即该参数表示,如果对应的mysql 接收的包大小超过了 max_allowed_packet 会提示异常信息,此时,有几种解决方式,例如,缩小自己传输的包(当然有时候就是因为业务需要,必须要传输的 packet 要大的多,那么就没办法缩小,而且还必须扩大)

Root Cause

pass

Solutions

提供两种解决方式:

  • temporary changed(临时修复方式,也即不需要重启mysql)

    该方式如果重启了 mysql 服务,则在重启之后,max_allowed_packet 会回复默认值 4m,对应字节数 = 4194304 bytes

    • 登陆 mysql ,启动个 query 窗口,先检查当前的 max_allowed_packet zhi
    SHOW VARIABLES LIKE "max_allowed_packet";
    

    查看结果为 max_allowed_packet 4194304

    • 执行如下命令进行更新 max_allowed_packet
    SET GLOBAL max_allowed_packet=268435456; -- 对应 256mb
    

    注意当前的 max_allowed_packet 存储的是 字节数 数值(从上面的介绍当中就可以知道 max_allowed_packet 单位就是 字节)

    • 再次检查,执行 SHOW VARIABLES LIKE "max_allowed_packet"; 查看当前的值,但是发现并未进行修改

    注意,该参数的修改并不是常规及时修改生效的参数,需要用户断开当前的库连接之后,再重新登陆查看,即可看到生效后的数

  • permanent changed (永久性修改)

    该方法需要重启mysql 服务,需要注意对应的数据的备份,(养成备份的习惯,应对disaster)

    • 修改 mysql 的配置文件

    linux 系统默认是 /etc/my.cnf, 或者 my.ini( windows 系统)

    # vim /etc/my.cnf
    
    # 添加配置参数
    [mysqld]
    max_allowed_packet=256M
    
    • 保存退出,并重启 mysql
    • 使用 SHOW VARIABLES LIKE "max_allowed_packet"; 查看当前值即可

 

Others

官方提供的解决方案:B.3.2.8 Packet Too Large

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值