我已经使用Maven实现了Liquibase。我们当前使用的是单个数据库(db2),但是现在我们需要向应用程序中添加一个具有不同对象的新数据库。
我已经看到我可以在Maven中定义一个新的配置文件,但是我找不到如何区分在哪个数据库上创建哪些对象的方法。
这个问题有方法解决吗?我可以使用liquibase支持2个具有不同对象的不同数据库吗?
正如您在文档中所见,您可以使用两种不同的执行方式,如下所示:
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.0.5</version>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<changeLogFile>PATH_TO_CHANGELOG_1</changeLogFile>
... connection properties ...
</configuration>
<goals>
<goal>update</goal>
</goals>
</execution>
<execution>
<phase>process-resources</phase>
<configuration>
<changeLogFile>PATH_TO_CHANGELOG_2</changeLogFile>
... connection properties ...
</configuration>
<goals>
<goal>update</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这种方法的唯一问题是您需要两个不同的changelog.xml文件,每个数据库一个。
此外,您可以在变更日志文件中设置先决条件,以在每个数据库将处理的变更集之间进行选择。
例如:
<changeSet id="1" author="bob">
<preConditions onFail="MARK_RAN">
<dbms type="oracle" />
</preConditions>
<comment>Comments should go after preCondition. If they are before then liquibase usually gives error.</comment>
<dropTable tableName="oldtable"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
这onFail="MARK_RAN"使 Liquibase 跳过变更集但将其标记为运行,因此下次它不会再试一次。有关 更复杂的先决条件,请参阅文档中的customPrecondition标记。
| 归档时间: |
|
| 查看次数: |
6763 次 |
| 最近记录: |