欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

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是否编辑成功

来自 https://www.cnblogs.com/huangcong/archive/2013/03/26/2981790.html


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

有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败。

查看目前配置

show VARIABLES like '%max_allowed_packet%';

显示的结果为:

+--------------------+---------+

| Variable_name      | Value   |

+--------------------+---------+

| max_allowed_packet | 1048576 |

+--------------------+---------+  

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

 

修改方法

1、修改配置文件

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

max_allowed_packet = 20M

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

mysql --help | grep my.cnf

去寻找my.cnf文件。

linux下该文件在/etc/下。

2、在mysql命令行中修改

在mysql 命令行中运行

set global max_allowed_packet = 2*1024*1024*10

然后退出命令行,重启mysql服务,再进入。

show VARIABLES like '%max_allowed_packet%';

查看下max_allowed_packet是否编辑成功

 
 注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。

来自 https://www.cnblogs.com/yeahgis/archive/2012/03/16/2399985.html


MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。

查看目前配置:

复制代码代码如下:
show VARIABLES like '%max_allowed_packet%';


显示的结果为:

复制代码代码如下:
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+ 


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


修改方法

1、修改配置文件

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

复制代码代码如下:
max_allowed_packet = 20M


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

复制代码代码如下:
mysql --help | grep my.cnf


去寻找my.cnf文件。
linux下该文件在/etc/下。


2、在mysql命令行中修改

在mysql 命令行中运行:

复制代码代码如下:
set global max_allowed_packet = 2*1024*1024*10


然后退出命令行,重启mysql服务,再进入。

复制代码代码如下:
show VARIABLES like '%max_allowed_packet%';


查看下max_allowed_packet是否编辑成功

注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。


如对本文有疑问,请提交到交流社区,广大热心网友会为你解答!!


来自  http://www.jb51.net/article/50364.htm


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是否编辑成功

来自  http://smilemonkey.iteye.com/blog/660889


如在导入数据库时出现“Got a packet bigger than 'max_allowed_packet' bytes”或者“MySQL server has gone away”等错误,一般是由于当前导入的数据大于系统的限制的最大包大小。服务器的默认max_allowed_packet值为1MB,通过修改'max_allowed_packet' 参数的大小就可以解决问题。

修改方法为:进入mysql的安装目录,找到my.ini文件,在最底下加上 max_allowed_packet=*M  (自己视情况设置)即可。

来自 http://www.jb51.net/article/39273.htm


如何解决 MySQL max_allowed_packet 错误

MySQL是目前使用很广泛的数据库,在使用过程中,有时我们会遇到一个与 "max_allowed_packet" 相关的报错,那如何解决这个问题呢? 看如下经验。

工具/原料

  • mysql 数据库

方法/步骤

  1. 1

    先看看与这个错误相关的后台异常 : 

     Packet for query is too large (1706 > 1024). You can change this value on the server by setting the max_allowed_packet' variable. 

    一旦数据库出现这个问题,基本执行任何查询语句,后台都会报这个错!(除非查询所得数据量特别少)!

  2. 2

    先登录数据库,查看 max_allowed_packet 这个参数值

    连接数据库服务器,登录 mysql, 执行命令 : 

    show variables like '%max_allowed_packate%' 

    即可查看这个系统参数目前的值 ! 我的系统,目前显示只有 1024 字节,确实太小了!

    如何解决 MySQL max_allowed_packet 错误
  3. 3

    通过 mysql 命令更改这个值到 100M !

    连接数据库服务器,登录 mysql, 执行命令 : 

    set global max_allowed_packet = 100*1024*1024

    退出后,重新登录 mysql ,再次查看这个系统项的值, 注意,必须重新登录mysql,否则这个值还是显示为原始值(缓存)!

    修改后,这个配置项显示为 100 M !

    如何解决 MySQL max_allowed_packet 错误
  4. 4

    修改配置文件--Windows

    我们刚才的修改是针对运行环境,但如果我们的配置文件不变,则重启数据库后,这个值又恢复为原始值了,对于 Windows 下的 MySQL,我们需要修改其配置文件 my.ini , 这个文件在 MySQL 的安装根目录下。

    注意: MySQL 配置文件分为几个段 (Section), 包括 [mysql], [mysqld], [mysqldump] 等, 我们需要在 [mysqld] 段下添加配置项 : 

    max_allowed_packet = 100M

    如何解决 MySQL max_allowed_packet 错误
    如何解决 MySQL max_allowed_packet 错误
  5. 5

    修改配置文件--Linux

    在 Linux 中,MySQL 对应的配置文件是 my.cnf , 我们在Linux终端输入如下命令 : 

    mysql --help | grep my.cnf

    可以查看 MySQL 所使用的 my.cnf 列表(优先级列表,先找到的配置文件生效),MySQL 会逐个目录寻找这个文件,直到找到为止!

    我们逐个目录找到我们系统 MySQL 所使用的 my.cnf 配置文件,找到对应的配置项,修改为 100M 即可。

    如何解决 MySQL max_allowed_packet 错误
    如何解决 MySQL max_allowed_packet 错误
    END

注意事项

  • 根据实际情况配置 max_allowed_packet 的大小
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

来自 https://jingyan.baidu.com/article/2d5afd69c4fca685a3e28e49.html

普通分类: