Liquibase - TagDatabase changeset也使用标记更新先前的变更集

时间:2014-04-08 04:10:59

标签: liquibase

我想使用changelog文件中的以下变更集来标记数据库,以便将来回滚。当我应用此变更集时,我注意到在databasechangelog中,之前的变更集也使用标记进行了更新。

更改日志文件中的变更集

`<changeSet author="Major Version" id="2.0"> 
 <tagDatabase tag="version_2.0"/>
 </changeSet> `

以下是databasechangelog表的摘录,function51是上一次运行的变更集

===>function51|| sr || ./db-changelog.xml || 05-APR-14 12.34.46.975900000 || 15 || EXECUTED || 7:5616f4adba7690fafd882b3a607c3eca || sqlFile || **version_2.0** || 3.1.1

`===>2.0 ||    Major Version  ||   ./db-ApplyTag.xml ||    05-APR-14 12.37.24.140637000    || 16 ||    EXECUTED  ||   7:97fe9eb435a72fdfbe27647efa5be97d  ||   tagDatabase       ||  **version_2.0** ||    3.1.1`

有人遇到过这个吗?我正在使用Liquibase 3.1.1

感谢。

1 个答案:

答案 0 :(得分:1)

原因是因为当Liquibase运行时,changeSet中的逻辑被运行,然后在databasechangelog表中被标记为ran。因此,对于tagDatabase,最后一次运行的changeSet是先前执行的changeSet。

回滚逻辑应该仍然可以正常工作,因为回滚到version_2.0会让你回到function51,这是最后一次执行的changeSet。再次运行更新会将其重新标记为version_2.0,但没关系。