database - 如何在 liquibase 中标记变更集以回滚

标签 database maven-plugin liquibase

我已经按照 maven configuration 中的说明为 liquibase 配置了 maven 插件.
现在创建了一个变更集,例如:-

<changeSet id="changeRollback" author="nvoxland">
  <createTable tableName="changeRollback1">
     <column name="id" type="int"/>
  </createTable>
  <rollback>
     <dropTable tableName="changeRollback1"/>
  </rollback>
</changeSet>

创建了使用命令行更新数据库的 sql :- mvn liquibase:updateSQL

但只是想知道如何使用“rollbackTag”参数回滚。 即如果运行命令“mvn liquibase:rollbackSQL”,“rollbackTag”参数的值应该是多少。

是否可以使用变更集 ID 回滚?

最佳答案

回滚标签旨在检查数据库的配置。

以下命令会将数据库配置回滚 3 个变更集并创建一个名为“checkpoint”的标记:

mvn liquibase:rollback -Dliquibase.rollbackCount=3
mvn liquibase:tag -Dliquibase.tag=checkpoint

您现在可以更新数据库,并在任何阶段使用回滚标记回滚到该点:

mvn liquibase:rollback -Dliquibase.rollbackTag=checkpoint

或者生成回滚 SQL:

mvn liquibase:rollbackSQL -Dliquibase.rollbackTag=checkpoint

修改后的例子

我最初发现很难弄清楚如何配置 liquibase Maven 插件。以防万一它有帮助这是我使用的示例。

liquibase 更新配置为自动运行,然后在当前 Maven 修订号处标记数据库。

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.myspotontheweb.db</groupId>
    <artifactId>liquibase-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <!-- Liquibase settings -->
        <liquibase.url>jdbc:h2:target/db1/liquibaseTest;AUTO_SERVER=TRUE</liquibase.url>
        <liquibase.driver>org.h2.Driver</liquibase.driver>
        <liquibase.username>user</liquibase.username>
        <liquibase.password>pass</liquibase.password>
        <liquibase.changeLogFile>com/myspotontheweb/db/changelog/db-changelog-master.xml</liquibase.changeLogFile>
        <liquibase.promptOnNonLocalDatabase>false</liquibase.promptOnNonLocalDatabase>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.3.162</version>
        </dependency>
    </dependencies>
    <profiles>
        <profile>
            <id>dbupdate</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.liquibase</groupId>
                        <artifactId>liquibase-maven-plugin</artifactId>
                        <version>2.0.2</version>
                        <executions>
                            <execution>
                                <phase>process-resources</phase>
                                <configuration>
                                    <tag>${project.version}</tag>
                                </configuration>
                                <goals>
                                    <goal>update</goal>
                                    <goal>tag</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

Liquibase 现在已配置为标准生命周期的一部分,因此可以按如下方式运行:

mvn clean compile

关于database - 如何在 liquibase 中标记变更集以回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11131978/

相关文章:

android - 将Firebase数据库转换为Cloud Firestore

C# 插入 MDB 数据库获取最后插入 ID

java - 获取删除触发器的当前用户 - Spring MyBatis - Liquibase

liquibase - 重复的列名,在注释变更集并取消注释后在 liquibase 中

mysql - DBeaver 错误解决 Maven 依赖项

php - 在不给服务器施加压力的情况下获取 MySQL 数据

jakarta-ee - 使用 Jcodemodel 生成代码

Maven内部版本号插件,如何将内部版本号保存在文件中?

java - 通过 Flyway 的 ODBC 连接

database-migration - Liquibase 数据库迁移,随着时间的推移进行管理