zoukankan      html  css  js  c++  java
  • 黄聪:2006 MySQL server has gone away错误,最大值溢出解决办法 mysql max_allowed_packet 查询和修改

    1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。
    最常见的就是采集或者新旧数据转化。
    解决方案:

    my.ini文件中添加或者修改以下两个变量:
    wait_timeout=2880000
    interactive_timeout = 2880000


    关于两个变量的具体说明可以google或者看官方手册。
    如果不能修改my.cnf,则可以在连接数据库的时候设置CLIENT_INTERACTIVE,比如:
    sql = "set interactive_timeout=24*3600";
    mysql_real_query(...)


    2、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。
    比如,图片数据的处理
    解决方案


    my.cnf文件中添加或者修改以下变量:
    max_allowed_packet = 10M  (也可以设置自己需要的大小)

    max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度。

    mysql根据配置文件会限制server接受的数据包大小。

    有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。

    查看目前配置

    show VARIABLES like '%max_allowed_packet%';

    显示的结果为:

    +--------------------+---------+ | Variable_name      | Value   | +--------------------+---------+ | max_allowed_packet | 1048576 | +--------------------+---------+  

    以上说明目前的配置是:1M

    修改方法

    1) 方法1

    可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。

    max_allowed_packet = 20M

    如果找不到my.cnf可以通过

    mysql --help | grep my.cnf

    去寻找my.cnf文件。

    2) 方法2

    (很妥协,很纠结的办法)

    进入mysql server

    在mysql 命令行中运行

    set global max_allowed_packet = 2*1024*1024*10

    然后关闭掉这此mysql server链接,再进入。

    show VARIABLES like '%max_allowed_packet%';

    查看下max_allowed_packet是否编辑成功

  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/huangcong/p/2981790.html
Copyright © 2011-2022 走看看