MySQL server has gone away错误提示解决方法

大概浏览了一下,主要可能是因为以下几种原因:
一种可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。
还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作数据库的间隔时间超过了wait_timeout(SHOW STATUS能看到此设置),那么就可能出现问题。最简单的处理方式就是把wait_timeout改大,当然你也可以在程序里时不时顺手mysql_ping()一下,这样MySQL就知道它不是一个人在战斗。
解决MySQL server has gone away
1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。
解决方案:
在my.cnf文件中添加或者修改以下两个变量:
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
参数的作用是,用来控制其通信缓冲区的最大长度。

(0)

相关推荐

  • MySQL server has gone away错误提示解决方法

    大概浏览了一下,主要可能是因为以下几种原因: 一种可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可. 还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作数据库的间隔时间超过了wait_timeout(SHOW STATUS能看到此设置),那么就可能出现问题.最简单

  • MySql 修改密码后的错误快速解决方法

    设置好密码后,使用数据库时出现如下错误: ERROR 1820 (HY000): You must reset your password using ALTER USER statement befo re executing this statement. You must SET PASSWORD before executing this statement的解决方法 今天在MySql5.6操作时报错:You must SET PASSWORD before executing this

  • 解压版MYSQL安装及遇到的错误及解决方法

    1 安装 在 MYSQL官网进行下载相应的解压版本,然后放在你所想的目录下. 解压内容如下: 然后我们需要去创建一个名为my.ini文件,注意文件后缀一定要是.ini结尾,如果文件后缀隐藏了,可以将其勾选上,如图: 创建文件:my.ini. 其内容如下: [client] port=3306 default-character-set=utf8 [mysqld] # 设置为自己MYSQL的安装目录 basedir=D:\Program Files\mysql-5.7.24-winx64 # 设置

  • linux下mysql提示"mysql deamon failed to start"错误的解决方法

    有台linux服务器,系统为centos系统. 网站突然连接不上数据库,于是朋友直接重启了一下服务器.进到cli模式下,执行 service myqsld start 发现还是提示"mysql deamon failed to start"错误信息. # /etc/init.d/mysqld start MySQL Daemon failed to start. Starting mysqld: [FAILED] 查看mysqld的log文件 #less /var/log/mysqld

  • MySQL server has gone away 问题的解决方法

    mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插入). 产生这个问题的原因有很多,总结下网上的分析: 原因一. MySQL 服务宕了 判断是否属于这个

  • mysql启动服务报1058错误的解决方法

    今天研究一个框架,数据库使用mysql,启动mysql服务的时候报1058错误,如下图. 在网上找了半天都是一样的解决 办法,试了一遍通通不行(仅针对我本地服务启动出现的问题无效).网上解决办法如下:. 新启动,却无法启动. 解决方法: ◆1.运行 D:\mysql\bin>mysqld-nt -remove Service successfully removed. D:\mysql\bin>mysqld-nt -install Service successfully installed.

  • SQL Server 2000“设备激活错误”的解决方法

    数据库中对数据的操作是一大重要技能,其中,数据的恢复和还原也是常做的事.不知你是否在数据库恢复时遇到诸如"设备激活错误,请使用with move选项来标志该文件的有效位置"的错误信息提示?不知你在还遇到这样的情况:还原数据库时, 发现在企业管理器中,操作:所有任务-->还原数据库-->选择"从设备"还原,找到备份文档路径,强制还原.报错:设备激活错误,请使用with move选项来标志该文件的有效位置.本文将为你讲解出现这个错误应如何解决. 解决方法:右

  • php Notice: Undefined index 错误提示解决方法

    第一种方法:如果不影响程序的正常执行,可以采用屏蔽的方法 可以在代码的第一行 加上 error_reporting(E_ALL ^ E_NOTICE); 关闭掉 NOTICE错误的警告 第二种方法:定位到具体的行,根据提示解决.例如elseif ($_POST['istrue'] == 'ok'),如上代码,没有提交istrue这个,所以肯定是有问题的. 可以用如下代码解决上面先判断 复制代码 代码如下: if(array_key_exists( 'istrue',$_POST)) { if($

  • mysql服务无法启动报错误1067解决方法(mysql启动错误1067 )

    试了谷歌到的几种方法,都没有解决,然后突然想起在启动apache的时候,iis的端口占用情况(因为我的apache也使用了80端口),所以  打开命令行 netstat -aon|findstr "3306" 结果显示 默默的在内心深处骂了一句"靠", 果然是端口占用,然后,顺藤摸瓜 tasklist|findstr "416" 结果显示 不得不联想到,优酷的攻城狮们的mysql数据库绝对不是使用的默认3306端口,然后杀掉explorer.ex

  • IIS配置与错误提示 解决方法

    win+r 运行 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 重新注册一下asp.net. 如果是vista操作系统,需要在dos命令窗口中运行以上的路径,并且dos窗口必须是以管理员身份运行.否则会出现当前的操作需要提升等错误. 配置错误: 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过

随机推荐