Man*_*anu 27 database liquibase maven-plugin
我已经为maven配置中指定的liquibase配置了maven插件.
现在创建了一个变更集,如: -
<changeSet id="changeRollback" author="nvoxland">
<createTable tableName="changeRollback1">
<column name="id" type="int"/>
</createTable>
<rollback>
<dropTable tableName="changeRollback1"/>
</rollback>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
使用命令行创建了用于更新DB的sql: - mvn liquibase:updateSQL
但只是想知道如何使用"rollbackTag"参数回滚.即如果运行命令" mvn liquibase:rollbackSQL ",则应该是"rollbackTag"参数的值.
是否可以使用变更集ID进行回滚?
Mar*_*nor 44
回滚标记旨在检查数据库的配置.
以下命令将数据库配置回滚3个变更集,并创建一个名为"checkpoint"的标记:
mvn liquibase:rollback -Dliquibase.rollbackCount=3
mvn liquibase:tag -Dliquibase.tag=checkpoint
Run Code Online (Sandbox Code Playgroud)
您现在可以更新数据库,并在任何阶段使用rollback标记回滚到该点:
mvn liquibase:rollback -Dliquibase.rollbackTag=checkpoint
Run Code Online (Sandbox Code Playgroud)
或者生成回滚SQL:
mvn liquibase:rollbackSQL -Dliquibase.rollbackTag=checkpoint
Run Code Online (Sandbox Code Playgroud)
我最初发现很难弄清楚如何配置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>
Run Code Online (Sandbox Code Playgroud)
Liquibase现在配置为标准生命周期的一部分,因此可以按如下方式运行:
mvn clean compile
Run Code Online (Sandbox Code Playgroud)
kot*_*dir 17
我个人更喜欢将标记作为变更集文件的一部分,因此如果您必须回滚或删除所有记录,DATABASECHANGELOG则不会丢失标记记录.
<databaseChangeLog>
<changeSet id="001_create_tables" .../>
<changeSet id="002_alter_tables" .../>
<changeSet id="003_load_user_data" .../>
<!-- Also include the tagging itself as a changeSet... -->
<changeSet author="userId" id="tag_version_0_1_0">
<tagDatabase tag="version_0.1.0" />
</changeSet>
<!-- version 0.1.0 ends here -->
</databaseChangeLog>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42472 次 |
| 最近记录: |