我正在尝试在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
为什么要加[*]或还有其他问题?我在运行变更集以创建视图时遇到的相同异常。
答案 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,它将无法运行。