druid连接oralce数据库报错的问题

背景描述:根据项目需求,使用druid连接池连接mysql数据库和derby数据库;
问题描述:在derby数据库环境下报错:init dataSource error Encounter "<EOF>" at~~~。
分析方法:初始化数据时报错,应为配置文件中有错误,分段屏蔽配置文件,确认产生报错的配置项为:validationQuery:SELECT 'x'。
将该配置项注释后又报错:testWhileIdle is true,validataionQuery not set。根据字面意思将testWhileIdle修改为false不再报错,工程正常运行。
但此时数据库将不再进行连接验证,存在一定的风险。查阅相关资料后发现,不同的连接池连接不同的数据库时有不同的测试语句(即validateionQuery)。再结合报错信息(Encounter"<EOF>")即启动数据库时发生了sql语句语法错误且与引号相关。确认为select 'X'错误。根据资料将该测试语句修改为values 1 数据库正常启动运行。
修改后的配置
dbconfig.properties
url:jdbc:derby://localhost:1527/dbName
driverClassName:org.apache.derby.jdbc.ClientDriver
username:app
password:**********
       
filters:stat
   
maxActive:20
initialSize:1
maxWait:60000
minIdle:10
maxIdle:15
   
timeBetweenEvictionRunsMillis:60000
minEvictableIdleTimeMillis:300000
   
validationQuery:SELECT 1
testWhileIdle:true
testOnBorrow:false
testOnReturn:false

maxOpenPreparedStatements:20
removeAbandoned:true
removeAbandonedTimeout:1800
logAbandoned:true

spring-*.xml
<!-- 阿里 druid数据库连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">  
         <!-- 数据库基本信息配置 -->
         <property name="url" value="${url}" />  
         <property name="username" value="${username}" />  
         <property name="password" value="${password}" />  
         <property name="driverClassName" value="${driverClassName}" />  
         <property name="filters" value="${filters}" />  
            <!-- 最大并发连接数 -->
         <property name="maxActive" value="${maxActive}" />
         <!-- 初始化连接数量 -->
         <property name="initialSize" value="${initialSize}" />
         <!-- 配置获取连接等待超时的时间 -->
         <property name="maxWait" value="${maxWait}" />
         <!-- 最小空闲连接数 -->
         <property name="minIdle" value="${minIdle}" />  
            <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
         <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
         <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
         <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />  
         <property name="validationQuery" value="${validationQuery}" />  
         <property name="testWhileIdle" value="${testWhileIdle}" />  
         <property name="testOnBorrow" value="${testOnBorrow}" />  
         <property name="testOnReturn" value="${testOnReturn}" />  
         <property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}" /> 
         <!-- 打开removeAbandoned功能 -->
         <property name="removeAbandoned" value="${removeAbandoned}" />
         <!-- 1800秒,也就是30分钟 -->
         <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" />
         <!-- 关闭abanded连接时输出错误日志 -->   
         <property name="logAbandoned" value="${logAbandoned}" />
    </bean>  

============================================================
补充:其他数据库和连接池对应的validationQuery,根据下图信息进行尝试设置
dbcp连接池
jdbc连接池

其他连接池:

附件:该问题参考一下网址解决

转载地址:https://blog.csdn.net/ronger4846/article/details/53487565

猜你喜欢

转载自blog.csdn.net/u014344668/article/details/79816237