mysql长时间后断开_mysql 长时间没连接了 就会自动断开服务
这是因为mysql 长时间没连接了 就会自动断开服务。
解决办法
1、首先,下载必须的jar包
dbcp 包,目前版本是1.2.1:http://jakarta.apache.org/commons/ dbcp /
pool包,目前版本是1.3:http://jakarta.apache.org/commons/pool/,
如果下载的pool包是1.2的版本,还要下载common-collections包:http://jakarta.apache.org/commons/collections/
在建立我们自己的数据库连接池时,可以使用xml文件来传入需要的参数,这里只使用hard code的方式来简单介绍,所有需要我们自己写的代码很少,只要建立一个文件如下:
import org.apache.commons. dbcp .BasicDataSource;
import org.apache.commons. dbcp .BasicDataSourceFactory;
import java.sql.SQLException;
import java.sql.Connection;
import java.util.Properties;
public class ConnectionSource {
private static BasicDataSource dataSource = null;
public ConnectionSource() {
}
public static void init() {
if (dataSource != null) {
try {
dataSource.close();
} catch (Exception e) {
//
}
dataSource = null;
}
try {
Properties p = new Properties();
p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");
p.setProperty("url", "jdbc:oracle:thin:@192.168.0.1:1521:testDB");
p.setProperty("password", "scott");
p.setProperty("username", "tiger");
p.setProperty("maxActive", "30");
p.setProperty("maxIdle", "10");
p.setProperty("maxWait", "1000");
p.setProperty(" removeAbandoned ", "false");
p.setProperty("removeAbandonedTimeout", "120");
p.setProperty("testOnBorrow", "true");
p.setProperty("logAbandoned", "true");
dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p);
} catch (Exception e) {
//
}
}
public static synchronized Connection getConnection() throws SQLException {
if (dataSource == null) {
init();
}
Connection conn = null;
if (dataSource != null) {
conn = dataSource.getConnection();
}
return conn;
}
}
接下来,在我们的应用中,只要简单地使用ConnectionSource.getConnection()就可以取得连接池中的数据库连接,享受数 据库连接带给我们的好处了。当我们使用完取得的数据库连接后,只要简单地使用connection.close()就可把此连接返回到连接池中,至于为什 么不是直接关闭此连接,而是返回给连接池,这是因为 dbcp 使用委派模型来实现Connection接口了。
在使用Properties来创建BasicDataSource时,有很多参数可以设置,比较重要的还有:
testOnBorrow、testOnReturn、testWhileIdle,他们的意思是当是取得连接、返回连接或连接空闲时是否进行有效性 验证(即是否还和数据库连通的),默认都为false。所以当数据库连接因为某种原因断掉后,再从连接池中取得的连接,实际上可能是无效的连接了,所以, 为了确保取得的连接是有效的,可以把把这些属性设为true。当进行校验时,需要另一个参数:validationQuery,对oracle来说,可以 是:SELECT COUNT(*) FROM DUAL,实际上就是个简单的SQL语句,验证时,就是把这个SQL语句在数据库上跑一下而已,如果连接正常的,当然就有结果返回了。
还有2个参数:timeBetweenEvictionRunsMillis 和 minEvictableIdleTimeMillis,他们两个配合,可以持续更新连接池中的连接对象,当 timeBetweenEvictionRunsMillis 大于0时,每过timeBetweenEvictionRunsMillis 时间,就会启动一个线程,校验连接池中闲置时间超过minEvictableIdleTimeMillis的连接对象。
还有其他的一些参数,可以参考源代码。
部分参数简要说明:
removeAbandoned :是否自动回收超时连接
removeAbandonedTimeout:超时时间(以秒数为单位)
rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的 Connection的回收,回收的Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的 Connection
logAbandoned:logAbandoned=true的话,将会在回收事件后,在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。
maxWait:超时等待时间以毫秒为单位
maxIdle:最大空闲连接
minIdle:最小空闲连接
maxActive:最大连接数
testOnBorrow、testOnReturn、testWhileIdle、validationQuery:上面有介绍
另外很重要的一点是每次连接使用完了不要忘了调用connection.close()使连接返回到连接池
mysql长时间后断开_mysql 长时间没连接了 就会自动断开服务相关推荐
- mysql没多久自动断开服务_mysql 长时间没连接了 就会自动断开服务
这是因为mysql 长时间没连接了 就会自动断开服务. 解决办法 1.首先,下载必须的jar包 dbcp 包,目前版本是1.2.1:http://jakarta.apache.org/commons/ ...
- 客户端连接mysql 自动断开_MySql连接空闲8小时自动断开的原因及连接池配置方法...
数据库连接超时时间查询 非交互式超时时间,如 JDBC 程序 show global variables like 'wait_timeout'; 交互式超时时间,如数据库工具 show global ...
- mysql时长用什么类型_MySQL 日期时间类型怎么选?千万不要乱用!
构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp. 不仅新手,包 ...
- mysql内置时间函数大全_MySQL 的时间函数 大全
MySQL 的时间函数 大全 2014年02月14号 发表于:评论 (1) 热度:1109 一.MySQL获得当前日期时间函数 1.1 获得当前日期+ 时间(date + time)函数:now ...
- mysql php 时间比较大小_MySql中时间比较的实现
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 mysql SELECT "1997-12-31 23:59:59" + INTERVAL 1 SEC ...
- MySQL时间字段效率_MYSQL数据库时间字段INT,TIMESTAMP,DATETIME性能效率比较
正 文: 在数据库设计的时候,我们经常会需要设计时间字段,在MYSQL中,时间字段可以使用int.timestamp.datetime三种类型来存储,那么这三种类型哪一种用来存储时间性能比较高,效率好 ...
- mysql添加时间默认值_mysql 创建时间字段添加默认值
在创建时间字段的时候 例如:字段 create_time 默认值可以设置为CURRENT_TIMESTAMP插入数据时候会自动添加时间,默认值为当前时间 update_time 默认值可以设置 ...
- MySQL+Hibernate下连接空闲8小时自动断开问题解决方案
本文转自http://blog.sina.com.cn/s/blog_6e6bbaf20100uocd.html,所有权利归原作者所有. 前段时间刚完成一个项目,数据库为MySQL5.0,持久层使用H ...
- mysql数据库中修改错别字_MYSQL 复杂查询超时连接 lost Error 与 错别字
最近的错别字是越来越厉害,上一篇开头就是两个错别字,恨得我要死,不检查,并且一边写一边查让写的语句也变得像是 translation的.所以最近在反思,数量和质量之间的问题,每周5天,天天一篇,虽然说 ...
最新文章
- ArcGIS制图之Sub Points点抽稀
- hadoop周边 框架体系
- Linux下JNI实现
- java resources目录 编码_关于Java项目读取resources资源文件路径
- 从零开始html css,HTML/CSS从零开始-常用属性(三)
- 为特使构建控制平面的指南-为可插入性构建
- matlab kfda,SVD与KFDA相结合人脸识别-matlab-毕业论文
- java学习(136):带泛型的类
- iou画 yolov3_专栏 | 【从零开始学习YOLOv3】4. YOLOv3中的参数进化
- mysql数据库持续_MySql数据库--持续记录ing
- python dataframe的某一列变为list_Python数据分析系列文章之Pandas(上)
- Bug(二)——error LNK1104:无法打开“opengl32.lib”
- Windows7下UEFI开发EDK2环境搭建(VS2013+UDK2015+IASL+patch+Openssl)
- 仿真树叶飘落效果的实现(精灵旋转…
- ASAM MCD2D 笔记(1) - ODX use cases
- 2004-6-6 0:03:43 死得其所
- Aspose.Cells.dll的运用
- 违反唯一性约束的两种可能:唯一约束or唯一索引
- Unity中Editor取消输入框焦点
- pytorch:交叉熵(cross entropy)