[英]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.