应该通过tagDatabase进行标记的属性应为“上下文”

时间:2018-07-02 21:26:23

标签: liquibase

我有以下情况: 我的数据库当前已标记为v2。因此,databasechangelog表包含v2。 我想应用仅对某些表记录进行数据更新的更改。此更改应仅在生产环境中应用(因此不能在DEV,TEST和验收环境中应用)。我使用Liquibase的上下文功能来实现依赖于环境的更新。 现在,我想应用数据库标签(在其自己的changeSet中使用tagDatabase元素)。 给出以上描述,我的问题是:

是否应该通过将context属性设置为production来使tagDatabase上下文依赖?

<databaseChangeLog...>
...
...
<changeSet id="some-update-001" author="my-name" context="PRODUCTION">
   <update>
        <!-- some update defined -->
   </update>
   <rollback>
       <!-- some rollback statement on previous update -->
   </rollback>
</changeSet>
<changeSet id="database-tag-v3" author="my-name" context="PRODUCTION">  <--
  <tagDatabse tag="v3"/>
</changeSet>
</databaseChangeLog>

考虑点:

情况1)如果我使数据库标记与上下文相关,则其他环境(例如DEV,TEST和ACCEPTANCE)将永远不会意识到此v3标记。他们的databasechangelog表将不包含v3标记。

情况2)如果我不使数据库标记依赖于上下文(在changeSet中省略context属性),则所有环境都将包含v3标记,但是只有PRODUCTION环境将包含所应用的PRODUCTION changeSet。其他环境将不包含此changeSet,因为它仅适用于PRODUCTION。因此,该数据库将被标记,但是没有运行changeSet(在数据库changelog表中看不到changeSet条目)。

什么是优良作法?案例1和案例2是否有不良后果?

0 个答案:

没有答案