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