我已经按照maven configuration中的规定为liquibase配置了maven pluggin

<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"参数回滚.

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

推荐答案

回滚标记旨在为数据库的配置设置判断点.

以下命令将按3个变更集回滚数据库配置,并创建名为"CheckPoint"的标记:

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

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

mvn liquibase:rollback -Dliquibase.rollbackTag=checkpoint

或者生成回滚SQL:

mvn liquibase:rollbackSQL -Dliquibase.rollbackTag=checkpoint

Revised example

最初我发现很难弄清楚如何配置Liqubase Maven插件.为了以防万一,这里是我用过的例子.

Liquid Base更新配置为自动运行,然后将数据库标记为当前的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相关问答推荐

如何替换对象数组内的数组元素

[mongodb],如何通过聚合获得具有许多不同字段的文档的最大值?子字段名称相同

创建一个spell check,判断具有合理运行时间的数据库

是否有一个简单的工具可以将 mysql 转换为 postgresql 语法?

什么是范围锁( range-locks)?

502 是数据库错误的适当状态代码吗?

数据库中空值(nulls)使用的空间

是否可以在ORDER BY子句之后放置任何可能造成安全风险的内容?

返回 SQLite 数据库中表大小的查询

连接字符串中超时

使用脚本语言动态数据库

执行语句还是运行脚本?

数据库与微服务的一致性

TransactionScope 是如何工作的?

XML、CSV 或数据库格式的 ICD-9 代码列表

单元测试数据库

有哪些不同类型的索引,每种索引的好处是什么?

使用 Django 的复合/复合主/唯一键

xampp phpmyadmin,格式参数不正确

我可以在 /sdcard 上下载 SQLite 数据库并从我的 Android 应用程序访问它吗?