目次一、问题分析mysql出现 [code]ERROR : (2006, 'MySQL server has gone away')[/code]的问题意思就是指client和MySQL server之间的链接断开了。 二、缘故原由造成如许的缘故原由,最常见的就是收罗或者新旧数据转化: 一样寻常说sql操作的时间过长,或者是传送的数据太大(比方使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的设置参数来避免,也可以在步伐中将数据分批插入(使用mysql limit举行分页,循环分批处理惩罚数据)); 应用步伐(比如PHP)长时间的实行批量的MYSQL语句。实行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理惩罚。都容易引起MySQL server has gone away。
三、分析缘故原由缘故原由一:MYSQL服务宕机了判断是否属于这个缘故原由的方法很简朴,进入mysql控制台,查看mysql的运行时长 [code]show global status like 'uptime';[/code]或者查看MySQL的报错日志,看看有没有重启的信息—— 假如uptime数值很大,表明mysql服务运行了好久了。阐明近来服务没有重启过。 假如日志没有相关信息,也表名mysql服务近来没有重启过,可以继续检查下面几项内容。 缘故原由二:MYSQL链接超时即某个mysql长毗连好久没有新的请求发起,到达了server端的timeout,被server强行关闭。 此后再通过这个connection发起查询的时候,就会报错server has gone away (大部门PHP脚本就是属于此类) [code]show global variables like '%timeout';[/code]wait_timeout 是28800秒,即mysql链接在无操作28800秒后被自动关闭 缘故原由三:MYSQL请求链接进程被自动KILL这种情况和缘故原由二相似,只是一个是人为一个是MYSQL自己的动作 [code]show global status like 'com_kill';[/code]缘故原由四:your SQL statement was too large当查询的效果集超过 max_allowed_packet 也会出现如许的报错。定位方法是打出相关报错的语句。 用select * into outfile 的方式导出到文件,查看文件巨细是否超过 max_allowed_packet ,假如超过则必要调解参数,或者优化语句。 [code]show global variables like 'max_allowed_packet';[/code]三、处理惩罚修改参数: [code]set global max_allowed_packet=1024*1024*16;[/code]这种情况可以通过修改max_allowed_packed的设置参数来避免,也可以在步伐中将数据分批插入(使用mysql limit举行分页,循环分批处理惩罚数据) 总结以上为个人经验,希望能给各人一个参考,也希望各人多多支持脚本之家。 来源:https://www.jb51.net/database/327018vwr.htm 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )|网站地图
GMT+8, 2025-7-1 21:56 , Processed in 0.030951 second(s), 19 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.