想做一个mysql如果异常断开了,可以自动重连的机制
大部分的人是说用mysql_ping()
char reconnectArg = 1;
if (!mysql_init(&mysql))
{
printf("mysql_init failed!\n");
Sleep(3 * 1000);
continue;
} if (mysql_options(&mysql,MYSQL_OPT_RECONNECT,(char*)&reconnectArg))
{
Sleep(3 * 1000);
continue;
}

if(!mysql_real_connect(&mysql,g_server_config.m_petlog_dbsrv.ip,g_server_config.m_petlog_dbsrv.user,g_server_config.m_petlog_dbsrv.psw,"petlogdb",g_server_config.m_petlog_dbsrv.port,NULL,CLIENT_MULTI_STATEMENTS))
{
mysql_close(&mysql);
Sleep(3 * 1000);
continue;
}
后来在mysql_real_query之前用mysql_ping(这个时候不是应该会自动连接上得嘛),返回0;
再执行mysql_real_query返回查询失败
if (!mysql_ping(&mysql))
{
mysql_close(&mysql);
g_petlog.init();
}
res = mysql_real_query(&mysql,data_buff,n);