MySQL的典型八小时问题

一、问题描述:

1、预约记录更新数据库时提示错误。


2、程序发送成功,但数据库返回失败。


3、提示由程序端引起的异常。


二、问题分析

1、mysql数据库有个经典的“8小时问题”。原因是mysql在默认的情况下,如果发现一个连接空闲时间超过8小时,将会在数据库端自动关闭这个连接。

2、software caused connectionabort这个异常的出现是因为客户端网络断了。在服务端/客户端单方面关闭连接的情况下,另一方依然以为TCP连接仍然建立,视图读取对方的响应数据,就会导致这种异常出现。

3、验证方法(mysql数据库中执行):

   a、show global variables like 'wait_timeout';秒为单位,是8小时。

   


  b、select VERSION();查询数据库的版本


三、解决方法。

   1、解决方法有三个,做的都是屏蔽8小时问题。

   25.0之前可以在数据库链接字符串上加:autoReconnect=true。这个在自动检测无效连接时会重建连接。

    3、设置连接校验机制。Btrue表示设置启动对无效连接的自动检测,A设置自动检测的间隔时间,一般要小于8小时;Ctrue表示表示使用连接时都对链接可用性进行校验,这个独立AB使用,C在多并发的情况下会影响程序性能。

    


4、直接设置Mysql等待时间

   a、在mysql安装目录my.ini中添加:wait_timeout=1814400(单位秒),超过8小时

    b、在程序中设置最大等待时间,超过8小时。

    


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值