java.sql.SQLException: Driver:oracle.jdbc.driver.OracleDriver 为 URL 返回 null:jdbc:h2:/data/sample;IFE

Posted

技术标签:

【中文标题】java.sql.SQLException: Driver:oracle.jdbc.driver.OracleDriver 为 URL 返回 null:jdbc:h2:/data/sample;IFEXISTS=TRUE【英文标题】:java.sql.SQLException: Driver:oracle.jdbc.driver.OracleDriver returned null for URL:jdbc:h2:/data/sample;IFEXISTS=TRUE 【发布时间】:2015-12-29 23:48:16 【问题描述】:

免责声明:Spring-boot新手。

我正在尝试设置一个 H2 数据库以使用 spring-boot 进行集成测试。

我收到错误:java.sql.SQLException: Driver:oracle.jdbc.driver.OracleDriver@2e179f3e returned null for URL:jdbc:h2:/data/sample;IFEXISTS=TRUE

我不确定在这里做什么。 我必须覆盖spring.datasource.url,因为该值应该在应用程序中。

FirstTest.groovy

​​>
package com.api

import groovy.util.logging.Slf4j
import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.boot.test.IntegrationTest
import org.springframework.boot.test.SpringApplicationConfiguration
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Api.class)
@IntegrationTest(value = "spring.profiles.active=h2")
@Slf4j
class FirstTest 


    @Test
    void test() 
        log.info 'debug log statement'
    


src/test/resources/config/application-h2.properties

spring.datasource.dataSourceClassName=org.h2.jdbcx.JdbcDataSource
spring.datasource.url=jdbc:h2:/data/sample;IFEXISTS=TRUE
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.database=H2

pom.xml

...
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
...
<dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.189</version>
</dependency>
...

编辑:这篇文章:spring boot default H2 jdbc connection (and H2 console) 似乎回答了我的问题

src/test/resources/config/application-h2.properties

spring.datasource.url=jdbc:h2:mem:foo-database;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

【问题讨论】:

【参考方案1】:

看起来您需要显式设置 JDBC 驱动程序类名称,就像您在其他定义中所做的那样:

spring.datasource.driverClassName=org.h2.Driver // <== add this
spring.datasource.dataSourceClassName=org.h2.jdbcx.JdbcDataSource
spring.datasource.url=jdbc:h2:/data/sample;IFEXISTS=TRUE
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.database=H2

另请参阅related question。

【讨论】:

以上是关于java.sql.SQLException: Driver:oracle.jdbc.driver.OracleDriver 为 URL 返回 null:jdbc:h2:/data/sample;IFE的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException: SQL 语句在 org.hsqldb.jdbc.JDBCUtil.sqlException 处关闭

Oracle DB:java.sql.SQLException:关闭连接

Cause: java.sql.SQLException: 请求的转换无效 ; uncategorized SQLException for SQL []; SQL state [99999]; er

java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 发生错误

Java:Sqlexception:位置不支持的 SQL92 令牌:178

java.sql.SQLException:接近“on”:语法错误问题