我已经研究过Liquibase changesets
、customChange
和contexts
,但在阅读了这几天的材料后,我仍然没有找到一个答案,可以帮助我完成我想做的事情。
基本上,我有数据库更改脚本,我想通过Liquibase运行。
script1.sql
个DROP MATERIALIZED VIEW LOG on TABLE1
个script2.sql
个DROP MATERIALIZED VIEW TABLE1
个
script1.sql
应该在某个DB1
上运行,而script2.sql
应该在某个DB2
上运行。DB1
和DB2
的数据库URL是:
DB1
:'jdbc:oracle:thin:@db_host:1521:DB1'
DB2
:'jdbc:oracle:thin:@db_host:1521:DB2'
我有ff.在build.gradle
中定义:
liquibase {
activities {
main {
changeLogFile "$projectDir/src/main/db/main-changelogs.xml"
url 'jdbc:oracle:thin:@db_host:1521:DB1'
username 'root'
password 'root'
}
}
}
字符串
我的更新日志定义如下:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.0.xsd
http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-3.8.xsd">
<changeSet id="1" author="bob">
<sqlFile dbms="oracle"
path="my/path/script1.sql" />
</changeSet>
<changeSet id="2" author="bob">
<sqlFile dbms="oracle"
path="my/path/script2.sql" />
</changeSet>
</databaseChangeLog>
型
因此,我的问题是,如何在我的更新日志中在DB1
和DB2
之间切换连接?
3条答案
按热度按时间svujldwt1#
据我所知,你可能需要2个不同的
liquibase.properties
文件来指定数据库url。另外,如果你只使用1个changelog文件,你可以使用labels,这将只允许标记的变更集对指定的数据库运行。wwwo4jvm2#
我也在Liquibase论坛上回答了这个问题。
您不能在Liquibase的执行中更改连接。
我建议分成两个变更日志并运行两个Liquibase部署,一个用于DB1,一个用于DB2。
4ioopgfo3#
我知道这是一个古老的线程,但对于有人寻找一种方式,这是我所做的
1.将连接字符串(jdbc url)保存在要主控的属性(或您首选的任何数据库)中
字符串
1.使用tag为每个更改翻转数据库。像这样:
型