我已经使用以下属性配置了Liquibase和spring-boot:
spring:
liquibase:
change-log: classpath:/db/changelog/db.changelog-master.yml
enabled: true
databaseChangeLog:
- include:
file: db/changelog/release-01/master.yml
- include:
file: db/changelog/release-02/master.yml
databaseChangeLog:
- changeSet:
id: 1
author: Prabal Srivastava
logicalFilePath: release-02-01__t_user_table.sql
context: User
labels: InitialCommit
comment: Initial changes for user table
changes:
- sqlFile:
path: 01__t_user_table.sql
relativeToChangelogFile: true
- tagDatabase:
tag: 0.0.2
rollback:
- sqlFile:
path: rollback/01__t_user_table.sql
relativeToChangelogFile: true
- changeSet:
id: 2
author: Prabal Srivastava
logicalFilePath: release-02-02__t_group_table.sql
context: Entry
labels: InitialCommit
comment: Initial changes for group table
changes:
- sqlFile:
path: 02__t_group_table.sql
relativeToChangelogFile: true
- tagDatabase:
tag: 0.0.2
rollback:
- sqlFile:
path: rollback/02__t_group_table.sql
relativeToChangelogFile: true
Acceptance:如果任何脚本无法在release-02
中应用,则该changeSet
中的所有release-02/master.yml
应该回滚。
当前:如果02__t_group_table.sql
下降,则仅回退组脚本,但不回退用户脚本。
我想要这样一种解决方案,如果将登台环境应用程序升级到生产环境,并且在生产环境上进行Liquibase迁移期间发生某些故障,那么该发行版中的changeSet
都不适用。
release-02/master.yml
脚本,如果要回滚changeLog“ release-02 / master.yaml中的所有changeSet,那么我认为最好只包含一个包含tagDatabase rollback标记的changeSet(第一个)您打算回滚端点。然后在以下包含相同标签的changeSet中删除其他tagDatabase属性。请考虑以下示例:
databaseChangeLog:
- changeSet:
id: release-0.0.2
author: Prabal Srivastava
changes:
- tagDatabase:
tag: 0.0.2
- changeSet:
id: 1
author: Prabal Srivastava
logicalFilePath: release-02-01__t_user_table.sql
context: User
labels: InitialCommit
comment: Initial changes for user table
changes:
- sqlFile:
path: 01__t_user_table.sql
relativeToChangelogFile: true
rollback:
- sqlFile:
path: rollback/01__t_user_table.sql
relativeToChangelogFile: true
- changeSet:
id: 2
author: Prabal Srivastava
logicalFilePath: release-02-02__t_group_table.sql
context: Entry
labels: InitialCommit
comment: Initial changes for group table
changes:
- sqlFile:
path: 02__t_group_table.sql
relativeToChangelogFile: true
rollback:
- sqlFile:
path: rollback/02__t_group_table.sql
relativeToChangelogFile: true
要对此变更日志进行回滚,您可以简单地运行:对于Liquibase Maven插件命令:
mvn liquibase:rollback -Dliquibase.rollbackTag=0.0.2
对于Liquibase CLI命令,您可以运行:
liquibase rollback 0.0.2