Mysql网络断开重连问题
来源:互联网 发布:机器人软件 编辑:程序博客网 时间:2024/05/22 12:54
最近做一个项目的后台守护程序,需要多线程对mysql数据库服务进行操作,为了加强守护撑的健壮性,特地连接成功后拔掉网线,然后测试守护程序断开重新连接的健壮性,可是发现网络断开后,重新插上网线,用mysql_real_conncet进行重新连接返回的永远是假,也就是重新连接失败,之后我想断开网络后重新将mysql连接释放(mysql_close(MYSQL )),并重新初始化mysql_init((MYSQL )),然后再用mysql_real_conncet()函数进行连接,但是这样做的后果是mysql_real_connect()报错,报错内容为没有足够的内存,明明我的电脑还有5个G空闲内存,居然说内存不够。。。
经过查阅资料,发现有一个叫mysql_options的函数,结合mysql_ping函数,mysql连接断开后可以自动重新连接:
使用mysql_ping来自动检查重连。用到两个函数,一个是mysql_ping,另外一个是mysql_options。具体使用方法是在mysql_real_connect之前,mysql_init之后,使用mysql_options。用法如下:
char value = 1; (void) mysql_init (&mysql); mysql_options(&mysql, MYSQL_OPT_RECONNECT, (char *)&value);
结合百度百科的使用方法:
mysql_optins
mysql_ping
然后在以后mysql_query之前首先使用mysql_ping进行判断,如果连接已经断开,会自动重连,或者再查询失败后,执行mysql_ping函数,然后自动重新连接mysqlsever.
不过,请注意,自动重新连接也会导致一些副作用,如下:
* 任何活动的交易都被回滚,autocommit模式被置为reset。
* 所有表锁都释放
* 所有临时表是关闭(撤消)
* Session variables are reinitialized to the values of the corresponding variables.会话变量被重新初始化为相应的变量。 这也影响那些隐式声明的变量,SET NAMES。比如使用This also affects variables that are set implicitly by statements such as SET NAMES.这也影响了变量,是一套由含蓄的声明,例如订定的名称。
* 用户变量设置都将丢失。
* 编制报表释放。
* 句柄变量被关闭。
* LAST_INSERT_ID()被重置为0 。
* 使用GET_LOCK()获得的锁被释放
- Mysql网络断开重连问题
- 【python】mysql断开重连
- sokcet 断开重连问题
- Qt关于mysql数据库断开重连的问题
- hibernate dbcp mysql 断开重连
- sokcet 断开重连问题
- 关于C#Socket断开重连问题
- mysql重连的问题
- ADO 数据库连接断开重连
- ADO 数据库连接断开重连
- hibernate 断开自动重连
- gprs经常断开重连
- MySql 8小时重连问题
- mysql的8小时重连问题
- MySql 8小时重连问题
- 王者荣耀自动重连,网络断开解决方案的研究与提出
- Android IM(五)连接断开重连
- Linux C socket 断开重连
- 移植OpenCV到ARM时的注意事项
- WordPress 数据结构分析
- sql语句模糊查询
- OC04核心语法总结 1
- java JDK配置
- Mysql网络断开重连问题
- 移植OpenCV的AdaBoost人脸检测算法到DM6467
- Android 实现从本地读取图片更改聊天背景
- J2SE基础摘要——异常处理
- iOS开发者必读的10本书
- 如何能让Java生成复杂Word文档
- 分支-08. 高速公路超速处罚(15)
- 2015.5.3
- 01_03 获取答案