MySQL server has gone away 问题详解程序员

c++操作mysql是创建连接后,该连接重复被使用。 但mysql 有一个wait time out的判定:

某个连接8小时(默认)内没有请求mysql,在mysql认定该连接失效。 这个认定导致后台

服务出错。

解决方式:

第一步. 在mysql_real_connect之前添加:

             char value = 1;
             mysql_options(m_mysql, MYSQL_OPT_RECONNECT, (char *)&value); 

        这样启动了重连选项。

第二步.   在发现MySQL server has gone away时重连

    if(mysql_errno(mysql) == 2006)//mysql_errno ------- 2006:MySQL server has gone away 
        mysql_ping(mysql);

这样应该就可以了。

另外看到有人另启动一个线程,每隔一段时间使用mysql_ping判断。 这是要注意query和mysql_ping存在

竞态,要加锁。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/7465.html

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论