运行Spring Boot集成测试时出现Liquibase问题

时间:2019-01-04 10:13:26

标签: java spring postgresql spring-boot liquibase

我正在尝试在Spring Boot中运行集成测试,该测试创建liqubase bean并运行所有变更集。在yaml文件中设置的更改以下运行时出现错误。 Spring Boot集成测试运行异常

=DATE(LEFT("20190104",4),MID("20190104",5,2),RIGHT("20190104",2))

例外是

   - changeSet:
        id: 2
        author: XXX
        changes:
        - sql:
            splitStatements: true
            sql: CREATE ROLE dba_user LOGIN PASSWORD 'dba_user';
            stripComments: true

为什么要加[*]或还有其他问题?我在运行变更集以创建视图时遇到的相同异常。

3 个答案:

答案 0 :(得分:0)

您的测试正在针对不具有CREATE ROLE功能的H2数据库运行。

顺便说一句,我认为通过Liquibase创建角色不是一个好主意。 Liquibase旨在用于数据库架构/数据迁移,而不是用于创建数据库实例(数据库角色的创建也属于该实例)。我建议在创建数据库实例时创建角色(无论是自动还是手动都无所谓)。

答案 1 :(得分:0)

如果您有与H2不兼容的SQL查询,则可以使用testcontainers在集成测试中使用PostgreSQL。它在后台运行docker容器以满足您在测试中的数据库需求,并且您可以查询容器化的PostgreSQL。

答案 2 :(得分:0)

preConditions:
        - onFail: MARK_RAN
        - not:
          - dbms:
              type: h2

我找到了一种跳过数据库特定脚本的方法。因此,如果是h2,它将无法运行。