gpt4 book ai didi

java - 如果一个 `changeSet` 申请失败,如何回滚 `databaseChangeLog` 内的所有 `changeSet` ?

转载 作者:行者123 更新时间:2023-12-01 16:34:45 32 4
gpt4 key购买 nike

我已经使用以下属性配置了 Liquibase 和 spring-boot:

  • Spring 启动
    spring:
liquibase:
change-log: classpath:/db/changelog/db.changelog-master.yml
enabled: true
  • db.changelog-master.yml
databaseChangeLog:
- include:
file: db/changelog/release-01/master.yml
- include:
file: db/changelog/release-02/master.yml
  • 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

接受:如果任何脚本未能在 release-02 中应用,则该 release-02/master 中的所有 changeSet .yml 应该回滚。

当前:如果02__t_group_table.sql正在下降,则只有组脚本会回滚,但用户脚本不会回滚。

我希望解决方案的方式是,如果暂存环境应用程序升级到生产环境,并且在生产环境的 Liquibase 迁移过程中出现故障,则该版本中的任何 changeSet 都不应适用。

最佳答案

对于您的 release-02/master.yml 脚本,如果您想回滚变更日志“release-02/master.yaml 中的所有变更集,那么我认为您最好只拥有一个包含要回滚端点的 tagDatabase 回滚标记的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

关于java - 如果一个 `changeSet` 申请失败,如何回滚 `databaseChangeLog` 内的所有 `changeSet` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61982820/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com