gpt4 book ai didi

maven - 基于多个数据库的 Liquibase

转载 作者:行者123 更新时间:2023-12-04 18:06:46 40 4
gpt4 key购买 nike

我已经用 Maven 实现了 Liquibase。我们目前使用的是单个数据库 (db2),但现在我们需要向应用程序添加一个新数据库,该数据库将具有不同的对象。

我已经看到我可以在 maven 中定义一个新的配置文件,但我不知道如何区分在哪个数据库上创建了哪些对象。

这个问题有方法解决吗?我可以使用 liquibase 支持具有不同对象的 2 个不同数据库吗?

最佳答案

正如您在 documentation 中看到的那样,您可以使用两种不同的执行方式,如下所示:

<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>

这种方法的唯一问题是您需要两个不同的 changelog.xml文件,每个数据库一个。

此外,您还可以拥有 preconditions在您的变更日志文件中选择每个数据库将处理的变更集。

例如:
<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>
onFail="MARK_RAN"使 Liquibase 跳过变更集但将其标记为运行,因此下次它不会再试一次。见 customPrecondition documentation 中的标签对于更复杂的前提条件。

关于maven - 基于多个数据库的 Liquibase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25364023/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com