MySQL 5.0.3开始,默认情况下禁止再连接,这是5.0.13中的新选项,提供了一种以显式方式设置再连接行为的方法。

mysql应用程序建立的长连接,大约过8小时会断开【没测过,网上都是这么说的】,这个与mysql的参数wait_timeout有关。可以用

show variables like '%time%';

语句查看下。

解决方法:

1. 修改配置文件:

/etc/my.cnf中wait_timeout的值,比如设置wait_timeout=8640000,即100天

2. mysql语句操作:set iwait_timeout=86400000

// 设定连接的生命周期1年
mysql_query(mysql_connection, "set wait_timeout=31536000");

1> interactive_timeout针对交互式连接,wait_timeout针对非交互式连接。所谓的交互式连接,即在mysql_real_connect()函数中使用了CLIENT_INTERACTIVE选项。

说得直白一点,通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接。

2> 在连接启动的时候,根据连接的类型,来确认会话变量wait_timeout的值是继承于全局变量wait_timeout,还是interactive_timeout。

3. mysql的API函数:

mysql_options与mysql_ping函数搭配使用,

在建立连接mysql_real_connect函数调用成功后,设置mysql的重连选项,

// 设置自动重连
char value = 1;  // 0 禁止重连 1 启动重连
mysql_options(mysql_connection, MYSQL_OPT_RECONNECT, &value);

再建立一个线程,固定频率调用mysql_ping函数,注意问题--------

mysql_ping会改变mysql_affected_rows的返回值。所以最好是给该MYSQL句柄再加一个mutex(最好是读写锁)。当其它线程准备执行query的时候,就获取锁,执行完就释放。而这个执行mysql_ping的线程在执行ping之间先尝试获取锁,如果获取失败,则继续sleep,放弃这一轮的ping。

不过网上有人说,如果设置了MYSQL_OPT_RECONNECT(),那么mysql_query()是可以完成自动重连的。

最新文章

  1. Windows下安装pip(转自http://www.cnblogs.com/yuanzm/p/4089856.html)
  2. 小游戏Talk表
  3. HDFS源码分析:NameNode相关的数据结构
  4. 常用开源镜像站整理android sdk manager
  5. FlashInspector 【Firefox浏览器插件,flash分析工具】
  6. Linux 学习笔记 cp 和 ln
  7. java List交集 并集 差集 去重复并集
  8. Android的GridView和Gallery结合Demo
  9. a标签的 target 使用
  10. lca转RMQ
  11. C#中的委托(一)
  12. PHP如何强制下载文件
  13. Python基础_函数闭包、调用、递归
  14. jquery datatables+MVC+WCF
  15. Python学习笔记【第十二篇】:Python异常处理
  16. arduino json 解析
  17. Mac 无需网线创建ipv6环境
  18. Django的URL name 学习
  19. 最短路径-Floyd算法(转载)
  20. LUOGU P4408 [NOI2003]逃学的小孩(树的直径)

热门文章

  1. DedeCms织梦后台管理员密码修改和忘记重置方法
  2. 使用Android Studio和Gradle编译NDK项目之Experimental Plugin User Guide
  3. c++11 实现RAII特性
  4. AngularJs学习笔记--IE Compatibility 兼容老版本IE
  5. bootstrap Switch 的一个坑点
  6. 使用commons-fileupload-1.2.1.jar等组件实现文件上传
  7. spring集成ehcache本地缓存
  8. log4j框架logger的继承关系以及使用场景
  9. Monad新解-FRP对比——ReactiveCocoa、RxSwift、Bacon以及背后的Functional
  10. BZOJ 3289: Mato的文件管理 【莫队 + 树状数组】