随笔-4  评论-40  文章-117  trackbacks-0

 

    应用程序和数据库建立连接,如果超过 wait_timeout (默认280008小时应用程序不去访问数据库,连接一直处于空闲状态,那么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 李阳 阅读(3664) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理