maven configuration で指定されているliquibaseのmavenプラグインを設定しました。
次のような変更セットを作成しました:-
<changeSet id="changeRollback" author="nvoxland">
<createTable tableName="changeRollback1">
<column name="id" type="int"/>
</createTable>
<rollback>
<dropTable tableName="changeRollback1"/>
</rollback>
</changeSet>
コマンドラインを使用してDBを更新するsqlを作成しました:-mvn liquibase:updateSQL
ただし、「rollbackTag」パラメーターを使用してロールバックする方法を知りたいだけです。すなわち、コマンド「mvn liquibase:rollbackSQL」を実行する場合、「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
最初は、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