我想使用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
感谢。
答案 0 :(得分:1)
原因是因为当Liquibase运行时,changeSet中的逻辑被运行,然后在databasechangelog表中被标记为ran。因此,对于tagDatabase,最后一次运行的changeSet是先前执行的changeSet。
回滚逻辑应该仍然可以正常工作,因为回滚到version_2.0会让你回到function51,这是最后一次执行的changeSet。再次运行更新会将其重新标记为version_2.0,但没关系。