使用mysql_ping解决mysql报错:“MySQL server has gone away“

问题背景:

   公司的fcgi程序需要访问mysql数据库,使用的mysql的C语言API进行操作的.今天发现调用一个fcgi时,报错:run mysql error: MySQL server has gone away.

调查与处理:

上网查找相关资料后,怀疑是该fcgi程序建立的数据库连接被mysql服务器断掉了.使用网友推荐的方法,添加了用于检测数据库连接的代码后,发现已经不会出现上述问题了.具体如下,供大家参考

/*fix "mysql server has gone away" */
void mysql_master_connect_ping(MYSQL** conn)
{
    if(mysql_ping(*conn) != 0)
    {
        /*close & reconnect*/
        mysql_close(*conn);
        *conn = mysql_connect();
        if(NULL==conn)
        {
            log_error("mysql_reconnect error!!!");
            exit(1);
        }
    }
    else
    {
        log_info("good mysql connect");
    }
}

 

 

你可能感兴趣的:(C/C++,数据库操作,MySQL,server,has,gon,mysql,C语言,mysql_ping,连接丢失)