一、问题描述:
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小时。