我已经了解了如何从现有架构生成changelog.xml。这很好,但我有现有的系统,我不想触及,除了引入新的变化。我还有全新的系统,需要应用所有更改。
因此,我想让liquibase仅在现有系统上运行时执行从changeset X迁移。即该系统的DB位于修订版X-1(但没有liquibase sys表),我不希望应用任何先前的迁移。
非常感谢, 专利
答案 0 :(得分:14)
我建议采用稍微不同的方法,如Liquibase forum thread
中所述
从现有架构生成更改日志。 liquibase CLI可以为您做到这一点。我通常采用生成的XML并稍微平滑一下(将组相关的更改转换为单个更改日志,执行特定于供应商的清理等等),但Liquibase完成了大部分的工作。
针对现有数据库(
changelogSync
命令)运行该更改日志,但仅将其标记为已应用(未实际修改架构)。- 醇>
使用liquibase从该点开始应用新的更改。
答案 1 :(得分:2)
我认为最简单的方法是首先在空数据库上执行初始设置,并导出liquibase插入DATABASECHANGELOG
表中的条目。然后我导出这些条目并将它们手动插入其中一个目标数据库中的DATABASECHANGELOG
表中,因此liquibase不会再次执行“更改”。
当然,我会在测试机器上测试所有测试转储......:)