作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用以下属性配置了 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
接受:如果任何脚本未能在 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/
我是一名优秀的程序员,十分优秀!