繁体   English   中英

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

[英]Liquibase issue while running spring boot integration test

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

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

例外是

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE ROLE DBA_USER LOGIN[*] PASSWORD 'dba_user' "; SQL statement:
    CREATE ROLE dba_user LOGIN PASSWORD 'dba_user' [42000-196]

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

您的测试是针对没有CREATE ROLE功能的H2数据库运行的。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM