Испытание на интеграцию пружинной гибернации в жидкой основе не выполнено - PullRequest
0 голосов
/ 17 октября 2019

Я могу правильно запустить свое приложение с жидкой базой. Среда, в которой мы используем include, spring, hibernate и mysql. Когда я пытаюсь запустить интеграционный тест (который имеет h2 дБ), я получаю следующее исключение:

 Caused by: liquibase.exception.DatabaseException: org.h2.jdbc.JdbcSQLException: Schema "pbr_tenant" not found; SQL statement: Caused by: liquibase.exception.DatabaseException: org.h2.jdbc.JdbcSQLException: Schema "pbr_tenant" not found; SQL statement: SET SCHEMA pbr_tenant [90079-197]
            at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:307)
            at org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$DataSourceClosingSpringLiquibase.afterPropertiesSet(LiquibaseAutoConfiguration.java:218)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1803)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1740)
            ... 105 more Caused by: org.h2.jdbc.JdbcSQLException: Schema "pbr_tenant" not found; SQL statement: SET SCHEMA pbr_tenant [90079-197]

Вот как выглядит мой application.yml для интеграционного теста.

datasource:
  url: jdbc:h2:mem:data_import-int;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL
  platform: h2
  username: sa
  password:
  driverClassName: org.h2.Driver
jpa:
  database-platform: org.hibernate.dialect.H2Dialect
  properties:
    hibernate:
      show_sql: true
      use_sql_comments: true
      format_sql: true


 liquibase:
      url: jdbc:h2:mem:pbr_tenant;MODE=Mysql;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;DATABASE_TO_UPPER=false;INIT=CREATE SCHEMA IF NOT EXISTS pbr_tenant;SCHEMA=pbr_tenant
      contexts: integration-test
      parameters:
        schema: pbr-tenant
      change-log: classpath:db/changelog/fini-changelog.yml

Что бы обойти.

1 Ответ

1 голос
/ 17 октября 2019

Итак, вы, кажется, пропустили схему. попробуйте следующее.

datasource:
  url: jdbc:h2:mem:data_import-int;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS pbr_tenant;MODE=MySQL
  platform: h2
  username: sa
  password:
  driverClassName: org.h2.Driver

, чтобы иметь возможность создать схему, если она не существует. Вы также можете попробовать:

datasource:
  url: jdbc:h2:mem:data_import-int;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS pbr_tenant;SET SCHEMA pbr_tenant;MODE=MySQL
  platform: h2
  username: sa
  password:
  driverClassName: org.h2.Driver

Чтобы дополнительно выбрать эту схему

...