您的位置:首页 > 数据库 > MySQL

MySQL的典型八小时问题

2016-01-25 21:04 453 查看
一、问题描述:
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小时问题。
 
  2、5.0之前可以在数据库链接字符串上加:autoReconnect=true。这个在自动检测无效连接时会重建连接。
    3、设置连接校验机制。B为true表示设置启动对无效连接的自动检测,A设置自动检测的间隔时间,一般要小于8小时;C为true表示表示使用连接时都对链接可用性进行校验,这个独立AB使用,C在多并发的情况下会影响程序性能。

    

4、直接设置Mysql等待时间
 
  a、在mysql安装目录my.ini中添加:wait_timeout=1814400(单位秒),超过8小时
    b、在程序中设置最大等待时间,超过8小时。
 
   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息