mysql away,MySQL server has gone away问题及其解决
初看这个提示,你可能会发笑,这个mysql的提示真是人性化呢。很快你就会笑不出来了,因为,问题是需要用来解决的。
看上去,应该是两次mysql操作之间的时间太长了,导致mysql连接自动关闭了。可是根据经验,对同一批数据,此前程序也这么写过,两次操作的时间也同样很长。更何况,同事也同时在操作这个库,间隔的时间比我的更长。
看了mysql服务器端的wait_timeout和max_allowed_packet的值,绝对的长和大!如下:
以下是代码片段:
mysql> show variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 28800 |
+---------------+-------+
1 row in set (0.00 sec)
mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)
看着这些数据,感觉可以判断出服务器端应该是没有问题的,但是总得用实验说话,编写如下程序:
以下是代码片段:
echo "Start !\n";
sleep(30);
echo "End !\n";
mysql_close($link);
?>
执行之后,到mysql服务器端show processlist;发现一超过20秒,就没有其连接了。然而再到另一台服务器上执行,却无此问题。top命令了一下,发现两台服务器的空闲内存的确差异很大。而上面又说明了,同事和我在同一服务器上对这个库进行操作却无此问题,真令人诧异。
而后又发现,我程序有个bug,有一数字变量本意是存储sql语句的记录,然而并没有考虑这个数组在执行时间好几个小时之后的大小会成为天文数字。莫非这个地方有问题?
既然暂时可以排除服务器的问题,只好从我的程序入手了。
mysql_ping()是个好东西,但用得也不是很爽。手册中“If it has gone down, an automatic reconnection is attempted. ”。但是,发现它并没有automatic reconnection。
于是只好,先判断mysql_ping()的返回值,如果false,则mysql_close()本次连接,然后mysql_connect()。
如果是在类里面实现的话,建议加上mysql_connect()第四的参数为true。这样在实例化的时候避免资源符号只有一个。
参考资料:
mysql away,MySQL server has gone away问题及其解决相关推荐
- MySQL: Starting MySQL….. ERROR! The server quit without updating PID file解决办法
1 问题 [root@localhost mysql]# /etc/rc.d/init.d/mysql status MySQL is not running, but lock file (/var ...
- Starting MySQL... ERROR The server quit without updating PID file 解决办法
百度了许多方法未果,偶然在一篇文章下的评论里发现了解决办法,如下: 在/etc/my.cnf文件里的[mysqld]下添加"user=root" 然后执行 service mysq ...
- 启动MySQL出错: Starting MySQL….. ERROR! The server quit with
启动MySQL出错: Starting MySQL-.. ERROR! The server quit with (2013-02-19 17:25:17) 转载▼ 标签: mysql error m ...
- mysql 启动错误-server PID file could not be found
2019独角兽企业重金招聘Python工程师标准>>> [root@centos var]# service mysqld stop MySQL manager or server ...
- Starting MySQL... ERROR! The server quit without updating PID file 问题解决
Starting MySQL... ERROR! The server quit without updating PID file 问题解决 参考文章: (1)Starting MySQL... E ...
- Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/vm10-0-0-19
输入:service mysqld start 报错: Starting MySQL.. ERROR! The server quit without updating PID file (/usr/ ...
- the serveice mysql_解决重启MySQL数据库The server quit without updating PID file问题
今天遇到一个网友求助,提到自己的网站可能是被攻击或者是其他问题导致网站无法打开.这里我也有看到他的网站打开之后提示"Error establishing a database connect ...
- mysql can_***MySQL错误:Can't connect to MySQL server (10060)
解决方法: 1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 ...
- mysql oracle mvcc_PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式
PostgreSQL.Oracle/MySQL和SQL Server的MVCC实现原理方式 关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控 ...
- mysql errmsg unknown_详解MySQL Server 启动时出现bug的解决方法
在用的mysql Server 无法启动.日志如下: 复制代码 代码示例: 130507 12:22:11 mysqld started 130507 12:22:11 [Warning] opti ...
最新文章
- 速度超Mask RCNN四倍,仅在单个GPU训练的实时实例分割算法 | 技术头条
- 可视化神经网络的网络结构并保存
- [分享]发布自己C#开发的ReSharper2.0 for VS2003/2005 注册机
- 微软2011 Build大会:Windows 8盛大出场(转)
- 微信视频号推荐算法上分技巧
- 服务器和客户端免密登录
- Git .gitignore文件忽略(自己做过测试了)
- 怎样用c语言写超市管理程序,C语言超市收银管理系统实现程序.doc
- 【转】WEB前端调优
- 第十讲:Obj-C Blocks 应用
- Facebook也大干新闻聚合 “新闻快读”向所有媒体开放
- 从零开始学前端:链接跳转 --- 今天你学习了吗?(CSS:Day03)
- Sql Server2005安装图解
- WEB小项目-账务管理系统(2020年03月24日更新,附数据库和源码包)
- Dreammail 下载与安装
- 微信小程序开发常用方法
- 理解机器翻译模型 Transformer
- 计算机打印机副机无法打印,局域网打印机无法打印怎么办 局域网打印机无法打印解决方法...
- md5加密算法使用流程
- ETCD数据库源码分析——etcdserver bootstrap初始化存储