在Mysql的默认设置中,如果一个数据库连接超过8小时没有使用(闲置8小时,即
28800s),mysql server将主动断开这条连接,后续在该连接上进行的查询操作都将失败,将
出现:error 2006 (MySQL server has gone away)!。
问题一:怎样才能保持mysql server不断开
解决问题一:
在使用mysql_real_connect函数与mysql连接成功后,创建一个线程,让该线程
的例行函数keep_connection,while(1)内间隔访问数据库(该间隔时间小于msyql中的
wait_timeout值),以保持与mysql server的连接。
问题二:在keep_connection函数的死循环中,调用sleep后(时间间隔小于wait_timeout),
只调用mysql_query执行mysql语句,在执行一段时间之后,出现 error 2014 (Commands out
of sync; you can't run this command now)
解决问题二:
仅仅需要执行一个SQL语句告知mysql server客户端有数据操作,也一样得读完整个
resault集并释放。操作数据库的最小化的写法:
while(1)
{
mysql_query(conn_ptr, "...");
result = mysql_use_result(conn_ptr);
mysql_free_result(result);
}
阅读(6938) | 评论(0) | 转发(2) |