【发布时间】:2015-08-27 07:11:48
【问题描述】:
我正在使用 Liquibase 3.3.5 来更新我的数据库。拥有上下文是只执行变更日志的特定部分的好方法。但我不明白,当更新时没有提供上下文时,为什么要执行所有变更集。考虑以下示例:
- 变更集 A:context=test
- 变更集 B:无上下文
- 变更集 C:context=prod
所以
- 使用 context=test 执行更新,将执行变更集 A+B。
- 使用 context=prod 执行更新,将执行变更集 B+C。
- 在没有上下文的情况下执行更新,将执行变更集 A+B+C。
对我来说,这根本没有意义:)。
我希望只有变更集 B 会被执行,因为它没有定义特定的上下文。
在 Liquibase 上下文示例中:http://www.liquibase.org/documentation/contexts.html(“为测试数据使用上下文”)他们说,应该用“test”标记要测试的变更集,并通过给出上下文“test”来执行它们以应用 testdata .很好 - 有道理。但是
“当需要迁移生产数据库时,不要包含“测试”上下文,并且不会包含您的测试数据。 "
所以,如果我在执行生产更新时不指定“测试”上下文,它会执行“测试”变更集,因为我根本没有指定上下文。
再次,我希望在更新执行时忽略测试,只会执行常规变更集而没有测试变更集。
或者我在这里遗漏了什么:)?
【问题讨论】:
标签: liquibase