mysql 远程 重连_有关mysql远程连接总结

1,远程连接与本地连接不同。本地连接因为不受网速等因素的影响,处理速度比较快,所以一般操作数据库的方式都是采用短连接的形式,也就是连接-操作-关闭。但是远程连接经过测试发现,连接远程服务器上的数据库耗时比较长,但是实际操作数据库用时不般不受太大的影响。所以,远程操作的方式采用长连接形式,也就是连接-操作。。。。。。-操作-关闭,详细一点,就是开始的时候连接,中间执行若干操作,只有关闭软件的时候才关闭数据库。

2,既然远程用长连接形式,有人会说中间连接断开了怎么办?其中有一个解决的办法,mysql的C  API 提供了一个函数mysql_ping(&msyqlconnect),可以将这个函数放到程序中的适当的位置,定期的检查数据库连接是否断开,若断开了,这个函数会自动进行连接。但是用这个函数有个前提:在使用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之前执行一次就够了。

我的具体实现代码是:

//数据库连接

int DataBaseOperator::connect(CString address,CString username,CString password,CString port,CString database)

{

if (mysql_real_connect(&mysqlConnect,address,username,password,database,atoi(port),NULL,0))

{

char value = 1;

mysql_options(&mysqlConnect, MYSQL_OPT_RECONNECT, &value);

return 1;

}

else

{

return 0;

}

}

可以另起一个定时器:

加入下面这句:

mysql_ping(&oper.mysqlConnect);

3,即然采用长连接,当时我们希望这个连接的时间越长越好。除了用mysql_ping()之外,我们最好设置一下mysql数据库的连接超时时长。

下面文字摘自http://blog.chinaunix.net/uid-26758020-id-3307042.html

在Mysql的默认设置中,如果一个数据库连接超过8小时没有使用(闲置8小时,即

28800s),mysqlserver将主动断开这条连接,后续在该连接上进行的查询操作都将失败,将

出现:error 2006(MySQL server has gone away)!。

查看mysql server超时时间:

msyql> show global variables like '%timeout%';

设置mysql server超时时间(以秒为单位):

msyql> set global wait_timeout=10;

msyql> set global interactive_timeout=10;

补充:2016.3.14日。

当我重新在远程服务器上配置mysql时,我的做法是这样的,因为我用的是免安装版的,所以直接将我电脑上的mysql文件夹拷贝到服务器上,然后按照上面的说明,到cmd里运行mysqld-nt  -install提示安装成功。在服务里可以找到mysql服务,但是当我启动服务时,出现1067错误。网上遍找解决方法,最后解决是在my.ini里修改下面两项:

#设置basedir指向mysql的安装路径

basedir=D:\mysql5

datadir=D:\mysql5\data

将这两个路径改为当前服务器上安装的路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值