MYSQL长时间保持连接

1、mysql如果长连接而长期没有对数据库进行任何操作,在timeout值后,mysql server就会关闭此链接,程序执行查询的时候就会得到一个类似于“MYSQL server has gone away”这样的错误。

在使用mysql_real_connect连接数据库之后,再使用mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) 来设置为自动重连。这样当mysql连接丢失的时候,使用mysql_ping能够自动重连数据库。如果是在mysql 5.1.6之前,那么则应在每次执行完real_connect 之后执行mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) ,如果是mysql 5.1.6+,则在connect之前执行一次就够了。

mysql_options(&m_data,MYSQL_OPT_RECONNECT,"gbk");
 if(mysql_real_connect(&m_data,server,username,password,database,port,0,0) == NULL)

mysql_ping(&m_data)//返回值为0正常,非零值则出错。

2、在MYSQL的默认设置中,如果一个数据库连接超过8小时没有使用(闲置8小时),服务器将断开这条连接,后续在该连接上进行的查询操作都将失败。网络上对该问题的描述非常多。也提供了相应的解决办法。我在这里提一些我自己的看法。

为超级用户登录到MYSQL  输入show global variables like 'wait_timeout';

现在重新设置该参数,例如我们要将超时时间设置成10个小时,可以输入:

set global wait_timeout=36000;

 

3、修改my.ini 配置文件  添加

wait_timeout=1814400

interval_timeout = 1814400

 4、mysql参考手册

http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c

你可能感兴趣的:(数据库)