Chinaunix首页 | 论坛 | 博客
  • 博客访问: 467624
  • 博文数量: 112
  • 博客积分: 2436
  • 博客等级: 大尉
  • 技术积分: 2769
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-04 19:48
文章分类

全部博文(112)

文章存档

2013年(7)

2012年(105)

分类: C/C++

2012-08-09 16:26:14

     在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);
 
}
阅读(6871) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~