【问题标题】:Hibernate With H2 Database: SchemaManagementException: Schema-validation: missing table使用 H2 数据库休眠:SchemaManagementException:模式验证:缺少表
【发布时间】:2023-04-06 06:18:01
【问题描述】:

我的单元测试完全可以使用 Postgres,但是当我切换到 H2 时出现以下异常:

SchemaManagementException: Schema-validation: missing table [inspection]

这是我的 application.yaml 文件:

spring:
  server:
    port: 8080

  datasource:
    url: jdbc:h2:mem:testdb
    driverClassName: org.h2.Driver
    username: test
    password: test

  jpa:
    hibernate:
      #defaultSchema: public
      dialect: org.hibernate.dialect.H2Dialect
      hbm2ddlAuto: validate
      showSql: true
      jdbcBatchSize: 20

  liquibase:
    enabled: true
    change-log: /db/changelog/changelog-master.xml
    url: jdbc:h2:mem:testdb
    user: test
    password: test

  # http://localhost:8080/h2-console
  h2:
    console:
      enabled: true

根据记录器执行 liquibase 变更集,如果我切换回 Postgres,则单元测试可以很好地使用相同的变更集。

【问题讨论】:

    标签: hibernate jpa h2


    【解决方案1】:

    仅仅因为您的 SQL 语句对于 PostgreSQL 是正确的,并不意味着它们可以与不同的数据库一起使用。

    对于 H2,可能需要一些稍微不同的查询才能使用 Hibernate ORM。 您应该检查 Hibernate ORM 如何为 H2 生成架构并将其与您为 PostgreSQL 所拥有的架构进行比较。

    我怀疑在这种情况下,问题与 H2 中区分大小写的表名有关。

    【讨论】:

      猜你喜欢
      • 2019-01-20
      • 2020-03-10
      • 2018-06-27
      • 2019-09-29
      • 2018-07-21
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      相关资源
      最近更新 更多