• 写入MySQL报错超出 max_allowed_packet 的问题


    写入MySQL报错超出 max_allowed_packet 的问题。

    MySQL会根据配置文件会限制server接受的数据包的大小。如果写入大数据时,因为默认的配置太小,插入和更新操作会因为 max_allowed_packet 参数限制,而导致失败。

    查看当前配置:

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

    也可以用select查看:

    mysql> select @@max_allowed_packet;
    +----------------------+
    | @@max_allowed_packet |
    +----------------------+
    |              4194304 |
    +----------------------+
    1 row in set (0.00 sec)

    mysql> 

    max_allowed_packet 如果不设置,默认值在不同的 MySQL 版本表现不同,有的版本默认1M,有的版本默认4M。

    修改方法1(配置文件持久化修改):
    vim /etc/my.cnf
    [mysqld]

    max_allowed_packet = 100M

    注意:修改配置文件以后,需要重启mysql服务才能生效。

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

    修改方法2(命令行临时修改):

    mysql> set global max_allowed_packet = 100 * 1024 * 1024;
    mysql> exit
    [root@localhost opt]# 
    [root@localhost opt]# mysql -uroot
    mysql> 
    mysql> select @@max_allowed_packet;
    +----------------------+
    | @@max_allowed_packet |
    +----------------------+
    |            104857600 |
    +----------------------+
    1 row in set (0.00 sec)

    mysql> 

    注意:

    1.命令行修改时,不能用M、G,只能这算成字节数设置。配置文件修改才允许设置M、G单位。

    2.命令行修改之后,需要退出当前回话(关闭当前mysql server链接),然后重新登录才能查看修改后的值。通过命令行修改只能临时生效,下次数据库重启后又复原了。

    3.max_allowed_packet 最大值是1G(1073741824),如果设置超过1G,查看最终生效结果也只有1G。

    [mysqld]
    max_allowed_packet = 1G

    mysql> show variables like '%max_allowed_pack%';
    +--------------------+------------+
    | Variable_name      | Value      |
    +--------------------+------------+
    | max_allowed_packet | 1073741824 |
    +--------------------+------------+

    1 row in set (0.00 sec)


  • 相关阅读:
    Django —— DateTimeField格式
    Django——权限组件(中间件判断用户权限--URL初级)
    linux命令
    性能测试--测试分类
    web安全之csrf攻击
    web安全之xss攻击
    测试用例规范
    禅道操作手册
    fiddler弱网测试
    Web测试系列之测试工具
  • 原文地址:https://www.cnblogs.com/jpfss/p/10762132.html
Copyright © 2020-2023  润新知