多数据源配置时validationQuery的问题(errorCode 923, state 42000 java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字)

起初,数据库配置为:

datasource: 
          master: 
            url: jdbc:postgresql://ip:5432/databaseName
            username: **
            password: **
            driver-class-name: org.postgresql.Driver

当我为项目新增Oracle数据库的连接时,报错如下:

2022-11-19 20:54:48.602 [Druid-ConnectionPool-Create-1602711561] ERROR com.alibaba.druid.pool.DruidDataSource:2699 - create connection SQLException, url: jdbc:oracle:thin:@ip:1521/**, errorCode 923, state 42000
java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字

问题原因:

druid的数据库配置validationQuery的属性值出错,对于不同的数据库,validationQuery的值是不同的。druid通过validationQuery来判断数据库联通性的,所以validationQuery的值是在当前配置数据库中执行查询,返回不为空数据的一句sql。

DataBase   validationQuery
hsqldb select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
Oracle  select 1 from dual
DB2  select 1 from sysibm.sysdummy1
MySql select 1
Microsoft SqlServer  select1
postgresql  select version()
ingres select 1
derby values 1
H2 select 1

 

解决办法:

datasource: 
          master: 
            url: jdbc:postgresql://**:5432/db20181301?currentSchema=**
            username: **
            password: **
            driver-class-name: org.postgresql.Driver
            druid:
              validationQuery: select 1
          # 多数据源配置   
          slave:
            url: jdbc:oracle:thin:@ip:1521/**
            username: **
            password: **
            driver-class-name: oracle.jdbc.OracleDriver
            druid:
              validationQuery: select 1 from dual

 

posted @ 2022-11-19 21:06  BeenTogether  阅读(2104)  评论(0编辑  收藏  举报