精华内容
下载资源
问答
  • validationQuery

    2019-03-01 13:11:06
    validationQuery Oracle select 1 from dual MySQL select 1 Microsoft SQL Server select 1 DB2 select 1 from sysibm.sysdummy1 SQLite select 1 HSQLDB select 1 from I...

     

    数据库validationQuery
    Oracleselect 1 from dual
    MySQLselect 1
    Microsoft SQL Serverselect 1
    DB2select 1 from sysibm.sysdummy1
    SQLiteselect 1
    HSQLDBselect 1 from INFORMATION_SCHEMA.SYSTEM_USERS
    postgresqlselect version()
    ingresselect 1
    Apache Derbyselect 1
    H2select 1
    Informixselect count(*) from systables
    展开全文
  • Druid validationQuery 错误

    2021-10-23 16:02:10
    Druid validationQuery 错误(给自己埋个坑) ERROR [com.alibaba.druid.pool.DruidDataSource] - invalid oracle validationQuery. SELECT 'x', may should be : SELECT 'x' FROM DUAL ERROR ...

    Druid validationQuery 错误(给自己埋个坑)

    ERROR [com.alibaba.druid.pool.DruidDataSource] - invalid oracle validationQuery. SELECT 'x', may should be : SELECT 'x' FROM DUAL
    ERROR [com.alibaba.druid.pool.DruidDataSource] - init datasource error, url: jdbc:oracle:thin:@10.28.61.24:1521:sbcsdb
    java.sql.SQLException: validateConnection false

    上面的错误提示是数据库连接校验,由于于不同数据库需要不同的校验语句造成,需要按照正确的语句进行配置就能解决

    <!-- mySQL必须这样配置检查,不了会报检查错误 -->
    <property name="validationQuery" value="SELECT 'x'" />
    
    <!-- oracle必须这样配置检查,不了会报检查错误 -->
    <property name="validationQuery" value="SELECT 1 FROM DUAL" />

    ojdbc14-10.2.jar

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"

    init-method="init" destroy-method="close">

    <!-- 基本属性 url、user、password -->

    <property name="url" value="${jdbc.url}" />

    <property name="username" value="${jdbc.user}" />

    <property name="password" value="${jdbc.password}" />

    <!-- 配置初始化大小、最小、最大 -->

    <property name="initialSize" value="1" />

    <property name="minIdle" value="1" />

    <property name="maxActive" value="20" />

    <!-- 配置获取连接等待超时的时间 -->

    <property name="maxWait" value="60000" />

    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->

    <property name="timeBetweenEvictionRunsMillis" value="60000" />

    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->

    <property name="minEvictableIdleTimeMillis" value="300000" />

    <!-- oracle必须这样配置检查,不了会报检查错误 -->

    <property name="validationQuery" value="SELECT 1 FROM DUAL" />

    <property name="testWhileIdle" value="true" />

    <property name="testOnBorrow" value="false" />

    <property name="testOnReturn" value="false" />

    <!-- 配置监控统计拦截的filters -->

    <property name="filters" value="stat" />

    </bean>

    下面是mysql的检查配置,默认配置里面是mysql检查语句

    <property name="validationQuery" value="SELECT 'x'" />

    常用数据库validationQuery检查语句

    数据库

    validationQuery

    Oracle

    select 1 from dual

    DB2

    select 1 from sysibm.sysdummy1 

    mysql

    select 1 

    microsoft sql

    select 1

    hsqldb

    select 1 from INFORMATION_SCHEMA.SYSTEM_USERS

    postgresql

    select version()

    ingres

    select 1

    derby

    select 1

    H2

    select 1

    展开全文
  • Druid配置参数详解-validationQuery Druid是一个由阿里开源的数据库连接池,Druid的配置非常丰富,但是设置不当会对生产环境造成严重影响,网上Druid的资料虽多,但大部分都是互相复制粘贴,有很多不准确甚至完全...

    Druid配置参数详解-validationQuery

    Druid是一个由阿里开源的数据库连接池,Druid的配置非常丰富,但是设置不当会对生产环境造成严重影响,网上Druid的资料虽多,但大部分都是互相复制粘贴,有很多不准确甚至完全错误的描述,Druid已经开源很久,而且作者WenShao的工作重心也已经不在Druid上,有些功能估计他自己都不太了解了。本系列将从源代码的角度分析Druid目前的最新版本(1.1.21)各个常用的配置项的具体含义以及是怎么起作用的。

    画外音:目前Druid在开源中国举办的2019年度最受欢迎中国开源软件中排名第7名,支持Druid的朋友可以去投票哇。2019年度最受欢迎中国开源软件

    validationQuery是什么意思?

    validationQuery:Druid用来测试连接是否可用的SQL语句,默认值每种数据库都不相同:

    Mysql:SELECT 1;

    SQLSERVER:SELECT 1;

    ORACLE:SELECT 'x' FROM DUAL;

    PostGresql:SELECT 'x';

    validationQuery什么时候会起作用?

    当Druid遇到testWhileIdle,testOnBorrow,testOnReturn时,就会验证连接的有效性,验证规则如下:

    如果有相关数据库的ValidConnectionChecker,则使用ValidConnectionChecker验证(Druid提供常用数据库的ValidConnectionChecker,包括MSSQLValidConnectionChecker,MySqlValidConnectionChecker,OracleValidConnectionChecker,PGValidConnectionChecker);

    如果没有ValidConnectionChecker,则直接使用validationQuery验证;

    ValidConnectionChecker是如何验证的?

    MySqlValidConnectionChecker会使用Mysql独有的ping方式进行验证,其他数据库其实也都是使用validationQuery进行验证

    MySqlValidConnectionChecker验证方式

    public boolean isValidConnection(Connection conn, String validateQuery, int validationQueryTimeout) throws Exception {

    if (conn.isClosed()) {

    return false;

    }

    //Mysql使用com.mysql.jdbc.MySQLConnection的pingInternal方法进行验证

    if (usePingMethod) {

    if (conn instanceof DruidPooledConnection) {

    conn = ((DruidPooledConnection) conn).getConnection();

    }

    if (conn instanceof ConnectionProxy) {

    conn = ((ConnectionProxy) conn).getRawObject();

    }

    if (clazz.isAssignableFrom(conn.getClass())) {

    if (validationQueryTimeout <= 0) {

    validationQueryTimeout = DEFAULT_VALIDATION_QUERY_TIMEOUT;

    }

    try {

    ping.invoke(conn, true, validationQueryTimeout * 1000);

    } catch (InvocationTargetException e) {

    Throwable cause = e.getCause();

    if (cause instanceof SQLException) {

    throw (SQLException) cause;

    }

    throw e;

    }

    return true;

    }

    }

    String query = validateQuery;

    if (validateQuery == null || validateQuery.isEmpty()) {

    query = DEFAULT_VALIDATION_QUERY;

    }

    Statement stmt = null;

    ResultSet rs = null;

    try {

    stmt = conn.createStatement();

    if (validationQueryTimeout > 0) {

    stmt.setQueryTimeout(validationQueryTimeout);

    }

    rs = stmt.executeQuery(query);

    return true;

    } finally {

    JdbcUtils.close(rs);

    JdbcUtils.close(stmt);

    }

    }

    OracleValidConnectionChecker的验证方式

    public boolean isValidConnection(Connection conn, String validateQuery, int validationQueryTimeout) throws Exception {

    if (validateQuery == null || validateQuery.isEmpty()) {

    validateQuery = this.defaultValidateQuery;

    }

    if (conn.isClosed()) {

    return false;

    }

    if (conn instanceof DruidPooledConnection) {

    conn = ((DruidPooledConnection) conn).getConnection();

    }

    if (conn instanceof ConnectionProxy) {

    conn = ((ConnectionProxy) conn).getRawObject();

    }

    if (validateQuery == null || validateQuery.isEmpty()) {

    return true;

    }

    int queryTimeout = validationQueryTimeout <= 0 ? timeout : validationQueryTimeout;

    Statement stmt = null;

    ResultSet rs = null;

    try {

    stmt = conn.createStatement();

    stmt.setQueryTimeout(queryTimeout);

    rs = stmt.executeQuery(validateQuery);

    return true;

    } finally {

    JdbcUtils.close(rs);

    JdbcUtils.close(stmt);

    }

    }

    SqlServer的验证方式

    public boolean isValidConnection(final Connection c, String validateQuery, int validationQueryTimeout) throws Exception {

    if (c.isClosed()) {

    return false;

    }

    Statement stmt = null;

    try {

    stmt = c.createStatement();

    if (validationQueryTimeout > 0) {

    stmt.setQueryTimeout(validationQueryTimeout);

    }

    stmt.execute(validateQuery);

    return true;

    } catch (SQLException e) {

    throw e;

    } finally {

    JdbcUtils.close(stmt);

    }

    }

    总结

    不同数据库的默认值不同;

    如果是Mysql数据库,则validationQuery不会起作用,Mysql会使用ping的方式验证;

    展开全文
  • 配置数据库时,属性validationQuery默认值为“select 1”,对于oracle值应为“select 1 from dual” validationQuery属性:用来验证数据库连接的语句,这个语句至少是返回一条数据的查询语句。每种数据库都有自己的...

    配置数据库时,属性validationQuery默认值为“select 1”,对于oracle值应为“select 1 from dual”

    validationQuery属性:用来验证数据库连接的语句,这个语句至少是返回一条数据的查询语句。每种数据库都有自己的验证语句。以下是不同数据库对应的验证语句:

    DataBasevalidationQuery
    hsqldbselect 1 from INFORMATION_SCHEMA.SYSTEM_USERS
    Oracleselect 1 from dual
    DB2select 1 from sysibm.sysdummy1
    MySqlselect 1
    Microsoft SqlServerselect 1
    postgresqlselect version()
    ingresselect 1
    derbyvalues 1
    H2select 1

    转载自:https://www.cnblogs.com/BonnieWss/p/9100402.html

    展开全文
  • 如题,validationQuery会执行一条sql如 ‘select 1’, 这样会产生很多提交日志。有没有其他办法?
  • validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条结果的SELECT语句。每种数据库都有各自的验证语句,下表中从网上收集了几种常见数据库的validationQuery。 数据库 validation...
  • 连接池配置 testOnBorrow=“false” testOnReturn=“false” testWhileIdle=“false” testWhileIdle 默认 true 为 true 时 validationQuery 必须设为非空字符串,不同数据源连接池版本默认值可能不一致。...
  • validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句,下表中收集了几种常见数据库的validationQuery。...
  • 似乎每个人都同意这是通过使用validationQuery testOnBorrow来解决的,但这并不能解决问题. 我使用以下软件 MySQL 5.1.41-3ubuntu12.10 Connector / J 5.1.18 Tomcat 6.0.24 以下是如何在server.xml中定义连接,我们...
  • 》帖子中想要增加对连接池中连接的测试/验证,防止数据库认为连接已死而Web应用服务器认为连接还有效的问题,Mysql文档中提到Tomcat文档中的例子中用的是validationQuery,但是网上还有很多帖子写的是testQuery,...
  • VALIDATIONQUERY1=select 1 注意事项

    千次阅读 2020-10-24 16:19:16
    VALIDATIONQUERY1=select 1 项目中用到了他。 select 1 from dual 是oracle专用, 在启动项目时从oracle系统库中随便查一条数据, 用来检测数据库连接是否有问题。 VALIDATIONQUERY1=select 1 也是同样的功能。 ...
  • 一开始遇到这个错误并且自己输入url后连接失败 一直去改druid 实际上它并不是一个错误,不用去管它,如果url输入不能连接,还要看后面cased by显示的错误
  • testWhileIdle is true, validationQuery not set

    千次阅读 2020-12-11 19:51:47
    浏览器访问Maven项目时报testWhileIdle is true, validationQuery not set 原因: 开启空闲检测,但是没有设置对应的检测语句 解决方法 在pom.xml文件中加依赖 <dependency> <groupId>com.alibaba</...
  • ERROR - - - com.alibaba.druid.pool.DruidDataSource : testWhileIdle is true, validationQuery not set 解决办法: 1、在pom.xml中添加依赖 <dependency> <groupId>com.alibaba</groupId> ...
  • 环境配置: JDK9, MYSQL8版本数据库 ...严重: testWhileIdle is true, validationQuery not set 原来properties文件配置如下: driverClassName = com.mysql.cj.jdbc.Driver url = jdbc:mysql://localhost:3306/te
  • DBCP针对不同数据库的validationQuery 当你使用DBCP连接池时,你可以通过设置testOnBorrow和testOnReturn属性测试这个连接是否可用。不幸的是你还需要设置validationQuery才能起作用。那么问题来了如何设置valid...
  • test-while-idle: true #验证连接是否可用,使用的SQL语句 validation-query: SELECT 1 #借出连接时不要测试,否则很影响性能 test-on-borrow: false test-on-return: false 如果是多数据源,请放在分数据源下,...
  • Jmeter数据库连接,配置JDBC Connection Configuration时,Validation Query字段要填写的内容: 验证查询的列表可以配置jdbc.config.check。查询属性,默认情况下: hsqldb:select 1 from INFORMATION_SCHEMA....
  • validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句,下表中收集了几种常见数据库的validationQuery。 DataBase validationQuery ...
  • DBCP针对不同数据库的validationQuery 当你使用DBCP连接池时,你可以通过设置testOnBorrow和testOnReturn属性测试这个连接是否可用。不幸的是你还需要设置validationQuery才能起作用。那么问题来了如何设置...
  • 各种数据库validationQuery的属性写法 https://www.cnblogs.com/BonnieWss/p/9100402.html
  • 声明:使用的JDK-13, MYSQL8版本数据库,1.0.9...一:严重: testWhileIdle is true, validationQuery not set 原来properties文件配置如下; driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localho...
  • druid链接池validationQuery的属性值问题

    千次阅读 2019-06-12 17:32:47
    druid通过validationQuery来判断数据库联通性的,所以validationQuery的值是在当前配置数据库中执行查询,返回不为空数据的一句sql。 DataBase validationQuery hsqldb select 1 from INFORMATION_...
  • druid错误但是不致命,错误意思是开启空闲检测,但是没有设置对应的检测语句 关掉检测的方法:application.yml中添加 spring: datasource: druid: test-while-idle: false ...
  • 什么是ValidationQuery?

    2019-05-28 09:53:00
    validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句,收集了几种常见数据库的validationQuery。 转载于:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,298
精华内容 20,519
热门标签
关键字:

validationquery