如何将标签设置为SQL格式的changeset以运行rollbackTag LiquibaseMaven



如果需要,我想将标记设置到我的变更集,以便再次回滚到此变更集

所以我想知道如何将标记设置为SQL格式的变更集

提前谢谢。

这是我在数据库上的数据库更改日志表。

数据库更改日志表

这是我的变更日志文件(标记不起作用,我也尝试了tagDatabase:"version_3.0",但都不起作用(:

--liquibase formatted sql
--changeset yusuf:5 -tag:"version_3.0"
create table test_table2 (test_id INT, test_column VARCHAR, PRIMARY KEY (test_id))

这是我的pom.xml liquibase插件:

<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>4.2.0</version>
<configuration>
<propertyFile>src/main/resources/liquibase.properties</propertyFile>
</configuration>
<goals>
<goal>update</goal>
<goal>tag</goal>
</goals>
</plugin>

目前在格式化的sql中没有任何东西可以直接支持这样做。

使用xml/yaml/json,我们可以在变更集中包含<tag>更改,但格式化的sql明确不支持这些更改,因为它专注于";剧本包含了所有的逻辑,而不依赖任何利口酒魔法"CCD_ 2落入其中。

标记所做的只是在databasechangelog表的tag列中标记最后运行的变更集。所以你可以这样做:

--liquibase formatted sql
--changest yusuf:5
create table test_table2 (test_id INT, test_column VARCHAR, PRIMARY KEY (test_id))
--changeset yusuf:6 -tag:"version_3.0"
update databasechangelog t set tag='version_3.0' where .... 

其中更新语句将是特定于数据库的内容。你可以想出"的正确语法;其中它是具有最高dateexecuted、orderexecured值的行";但这可能会变得复杂。您可以通过运行logLevel=fine的liquibase tag命令来获取数据库使用的内容并查看它

或者,如果您知道它在变更日志文件中的位置以及它是如何使用的,则可以执行更简单的where id='5' and author='yusuf' and path='my/file.sql'类型语句。

最新更新