更新到SpringBoot 2.4.0后内存数据库中的H2无法正常工作

乌尔里希

我有一个使用H2内存数据库进行集成测试的SpringBoot应用程序。如果我在versino 2.3.4.RELEASE中使用SpringBoot,则测试有效。如果我升级到2.4.0并出现以下错误,它们将失败:

java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Driver com.microsoft.sqlserver.jdbc.SQLServerDriver claims to not accept jdbcUrl, jdbc:h2:mem:integrationTestDB;DB_CLOSE_DELAY=-1;MODE=MSSQLServer;INIT=CREATE SCHEMA IF NOT EXISTS dbo\;SET SCHEMA dbo
Caused by: java.lang.RuntimeException: Driver com.microsoft.sqlserver.jdbc.SQLServerDriver claims to not accept jdbcUrl, jdbc:h2:mem:integrationTestDB;DB_CLOSE_DELAY=-1;MODE=MSSQLServer;INIT=CREATE SCHEMA IF NOT EXISTS dbo\;SET SCHEMA dbo

这是测试所使用的我的integration-test.properties:

spring.datasource.url=jdbc:h2:mem:integrationTestDB;\
  DB_CLOSE_DELAY=-1;\
  MODE=MSSQLServer;\
  INIT=CREATE SCHEMA IF NOT EXISTS dbo\\;SET SCHEMA dbo
spring.datasource.driver=org.h2.Driver
spring.datasource.hikari.driver-class-name=org.h2.Driver

hibernate.dialect=org.hibernate.dialect.SQLServerDialect
hibernate.hbm2ddl.auto=none

spring.datasource.username=sa
spring.datasource.password=

spring.liquibase.user=sa
spring.liquibase.password=

H2的版本是1.4.200。成功和失败之间的区别是pom父元素中的SpringBoot版本:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.0</version>
    </parent>

liquibase版本从3.8.9更改为3.10.3。我将其配置为保持在3.8.9,但这没有帮助。

我阅读了发行说明,并找到了有关嵌入式数据库检测的部分:https : //github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes#embedded-database-detection

但是添加

spring.datasource.initialization-mode=always

到属性也没有帮助。

我记得上次花了一些时间才能找到正确的数据源网址,但是我找不到与Google相关的新线索。

您能给我一个提示,是什么原因导致这个问题?

亲切的问候,乌尔里希

安迪·威尔金森

您的属性包含H2和SQLServer配置的混合。例如,您已经为数据源配置了H2 JDBC URL,但已将Hibernate配置为使用SQLServerDialect异常表明,尝试初始化Liquibase时正在使用SQLServer的JDBC驱动程序。在我看来,您似乎正在尝试在集成测试中使用H2,取代部署应用程序时使用的SQLServer。

2.4.0中有一个spring.liquibase.driver-class-name属性如果未设置,则退回到使用spring.datasource.driver-class-name没有spring.datasource.driver属性,因此请尝试替换以下两行:

spring.datasource.driver=org.h2.Driver
spring.datasource.hikari.driver-class-name=org.h2.Driver

与以下行:

spring.datasource.driver-class-name=org.h2.Driver

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

E4 应用程序中的 H2 数据库无法解析

来自分类Dev

更新到AspNet Identity版本2后无法建立或迁移数据库

来自分类Dev

Doctrine 2将数据更新到数据库中,但未将数据更新到实体中

来自分类Dev

更新到Visual Studio 2015 Update 2后无法在T4模板的调试期间监视变量

来自分类Dev

Spyder无法更新到V4

来自分类Dev

无法从 BootStrap 3 更新到 BootStrap 4

来自分类Dev

在JDBC中更新/更改h2数据库的密码

来自分类Dev

使用 H2 数据库时 Quill 中插入或更新操作的编译错误

来自分类Dev

Spring4 JUnit测试:将SQL加载到H2数据库

来自分类Dev

Angular 2 服务未更新到组件

来自分类Dev

如何关闭H2内存数据库?

来自分类Dev

内省内存H2数据库

来自分类Dev

更新到 angular 4 后找不到 platformUniversalDynamic

来自分类Dev

无法将OpenGL从3.3更新到4.x

来自分类Dev

是否可以将MySQL Workbench连接到内存数据库中的H2?

来自分类Dev

在Spring-Boot 2.3.3中,H2内存数据库抛出NonTransientConnectionException

来自分类Dev

尝试使用H2数据库更新JDBC ResultSet时发生异常

来自分类Dev

尝试使用H2数据库更新JDBC ResultSet时发生异常

来自分类Dev

Drupal更新到最新的Drupal后显示(2)导航菜单

来自分类Dev

无法从H2数据库获取结果

来自分类Dev

无法更新到php 5.4-AWS ec2

来自分类Dev

H2数据库中的当前时刻

来自分类Dev

在 h2 数据库中存储图像

来自分类Dev

找不到类“ org.h2.fulltext.FullTextLucene”-H2数据库1.4。*不适用于Lucene Core 4. *

来自分类Dev

找不到类“ org.h2.fulltext.FullTextLucene”-H2数据库1.4。*不适用于Lucene Core 4. *

来自分类Dev

为什么我无法在H2数据库中创建表?

来自分类Dev

H2数据库的IOExceptions

来自分类Dev

H2数据库与unitils

来自分类Dev

更新到Spring-security-3.2.0.RC2时的AuthenticationManager

Related 相关文章

  1. 1

    E4 应用程序中的 H2 数据库无法解析

  2. 2

    更新到AspNet Identity版本2后无法建立或迁移数据库

  3. 3

    Doctrine 2将数据更新到数据库中,但未将数据更新到实体中

  4. 4

    更新到Visual Studio 2015 Update 2后无法在T4模板的调试期间监视变量

  5. 5

    Spyder无法更新到V4

  6. 6

    无法从 BootStrap 3 更新到 BootStrap 4

  7. 7

    在JDBC中更新/更改h2数据库的密码

  8. 8

    使用 H2 数据库时 Quill 中插入或更新操作的编译错误

  9. 9

    Spring4 JUnit测试:将SQL加载到H2数据库

  10. 10

    Angular 2 服务未更新到组件

  11. 11

    如何关闭H2内存数据库?

  12. 12

    内省内存H2数据库

  13. 13

    更新到 angular 4 后找不到 platformUniversalDynamic

  14. 14

    无法将OpenGL从3.3更新到4.x

  15. 15

    是否可以将MySQL Workbench连接到内存数据库中的H2?

  16. 16

    在Spring-Boot 2.3.3中,H2内存数据库抛出NonTransientConnectionException

  17. 17

    尝试使用H2数据库更新JDBC ResultSet时发生异常

  18. 18

    尝试使用H2数据库更新JDBC ResultSet时发生异常

  19. 19

    Drupal更新到最新的Drupal后显示(2)导航菜单

  20. 20

    无法从H2数据库获取结果

  21. 21

    无法更新到php 5.4-AWS ec2

  22. 22

    H2数据库中的当前时刻

  23. 23

    在 h2 数据库中存储图像

  24. 24

    找不到类“ org.h2.fulltext.FullTextLucene”-H2数据库1.4。*不适用于Lucene Core 4. *

  25. 25

    找不到类“ org.h2.fulltext.FullTextLucene”-H2数据库1.4。*不适用于Lucene Core 4. *

  26. 26

    为什么我无法在H2数据库中创建表?

  27. 27

    H2数据库的IOExceptions

  28. 28

    H2数据库与unitils

  29. 29

    更新到Spring-security-3.2.0.RC2时的AuthenticationManager

热门标签

归档