应用程序和数据库建立连接,如果超过
wait_timeout (默认28000秒8小时) 应用程序不去访问数据库,连接一直处于空闲状态,那么
MySQL就会自动关闭该连接 ,
如果再在该连接上执行查询操作,就会发生MySQL server has gone away错误。
wait_timeout
服务器在关闭连接之前在一个连接上等待行动的秒数,默认数值是28800,即如果没有事情发生,服务器在 8个小时后关闭连接。
尝试解决办法:
<1>.这是由于超时时间 wait_timeout 过短导致,所以修改它的值即可。打开MySQL安装目录下的 mysql.ini,在文件中添加一行配置项 wait_timeout=1000000 即可。(默认没有此选项,需要手动的添加)
该方法可行。
<2>.在代码中设置自动重连选项,
m_connection.set_option( new mysqlpp::ReconnectOption(true) );
然后在发生 MySQL server has gone away错误 的时候 调用 Connection::ping()方法,该函数会检查对服务器的连接是否正在工作,必要时重新连接,但经过测试后发现,这种方法不起作用。
posted on 2009-05-08 17:54
李阳 阅读(3667)
评论(0) 编辑 收藏 引用