公司的水源项目监测数据一直正常,但是今天出问题了。 情况是演示的终端节点从昨天晚上6点就被带走了,今天2点才重新开启。 但是正常开启后,傻眼了,网页上没有数据,数据库里没有数据。 最后对每一个过程进行检查,发现日志中最后一句是MySQL server has gone away。 把提供数据转发的软件重新启动后,发现完全能够从数据库取得下发命令。 问题解决了,不过还得针对该问题进行解决。 于是在网上查询后,看到这样一句话,大概意思是说:MYSQL默认持续连接时间是8个小时,如果8小时内没有对数据库进行操作,该连接将被释放,再次操作数据库就会出现该错误。 知道出错原因后,就得解决,方法有下面两个。 方法一:设置持续链接时间更长一点。方法如下: 在my.ini文件中添加或者修改以下两个变量: wait_timeout=2880000 interactive_timeout = 2880000 或是 $sql = "set interactive_timeout=24*3600"; mysql_real_query($sql) 方法二: 在数据库执行失败后,强制关闭当前链接,重新创建一个全新的数据库连接,方法如下: mysql_close($link); $link=mysql_connect('$host','$user','$pwd'); mysql_select_db('$dbname',$link); 或是 mysql_ping($link); 最终决定用方法2解决该问题。 |