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 在使用 Maven 时给出 ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver