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小时。
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小时。
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 数据库链接字符串查询网站
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法