Spring Boot JDBC derby 在内存中的配置问题

Posted

技术标签:

【中文标题】Spring Boot JDBC derby 在内存中的配置问题【英文标题】:Configuration issue with SpringBoot JDBC derby inmemory 【发布时间】:2020-12-21 09:49:38 【问题描述】:

尝试使用 SpringBoot 设置 Derby 内存数据库,但出现错误。

Gradle 依赖项:

    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.apache.derby:derbyshared:10.15.2.0'
    implementation 'org.apache.derby:derbytools:10.15.2.0'
    implementation 'org.apache.derby:derbyclient:10.15.2.0'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

application.properties:

spring.datasource.url=jdbc:derby:memory:;create=true
spring.datasource.driver-class-name=org.apache.derby.jdbc.EmbeddedDriver

应用程序启动失败


说明:

无法将 '' 下的属性绑定到 com.zaxxer.hikari.HikariDataSource:

Property: driver-class-name
Value: org.apache.derby.jdbc.EmbeddedDriver
Origin: "driverClassName" from property source "source"
Reason: org.apache.derby.iapi.jdbc.JDBCBoot

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

删除driver-class-name 行

driverClassName HikariCP 将尝试通过仅基于 jdbcUrl 的 DriverManager 解析驱动程序,但对于一些较旧的驱动程序,还必须指定 driverClassName。 忽略此属性,除非您收到一条明显的错误消息,表明未找到驱动程序。默认值:无

并添加dataSourceClassName(或data-source-class-name):

spring.datasource.dataSourceClassName=org.apache.derby.jdbc.ClientDataSource

我们建议使用 dataSourceClassName 而不是 jdbcUrl

【讨论】:

【参考方案2】:

我需要用 derby.jar 替换 derbyclient.jar 以便在内存中本地工作:

    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.apache.derby:derby:10.15.2.0'
    implementation 'org.apache.derby:derbyshared:10.15.2.0'
    implementation 'org.apache.derby:derbytools:10.15.2.0'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

感谢您的帮助!

【讨论】:

以上是关于Spring Boot JDBC derby 在内存中的配置问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Derby 配置 Spring-Boot Autowired JdbcTemplate

Spring Boot Embedded Derby 在最新版本中不起作用。

使用 Apache Derby 作为嵌入式数据库的 Spring-boot 错误

Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it

Derby/JDBC 连接生命周期(或空闲超时)

Derby 在使用 Maven 时给出 ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver