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
之间的连接?
据我所知,您可能需要 2 个不同的
liquibase.properties
文件来指定数据库 URL。另外,如果您仅使用 1 个变更日志文件,则可以使用 labels,这将只允许标记的变更集针对指定的数据库运行。
我也在 Liquibase 论坛上回答过这个问题...
您无法在 Liquibase 执行中更改连接。
我建议分成两个变更日志并运行两个 Liquibase 部署,一个用于 DB1,一个用于 DB2。
我知道这是一个旧线程,但对于寻找方法的人来说,这就是我所做的
Enter the Target database 'url' information
liquibase.command.url=jdbc:sqlserver://localhost;database=master;applicationname=LiquibasePoC;encrypt=false;trustServerCertificate=false
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog>
<changeSet author="user" id="BaseObjects">
<sql>use liquibasePOC;</sql>
<sqlFile dbms="mssql" encoding="UTF-8" endDelimiter="\nGO" path="./changesets/liquibasepocdb/tables/dbo.Table1.sql"
relativeToChangelogFile="false" splitStatements="true" stripComments="true" />
<sqlFile dbms="mssql" encoding="UTF-8" endDelimiter="\nGO" path="./changesets/liquibasepocdb/tables/dbo.Table2.sql"
relativeToChangelogFile="false" splitStatements="true" stripComments="true" />
<sqlFile dbms="mssql" encoding="UTF-8" endDelimiter="\nGO" path="./changesets/liquibasepocdb/procedures/dbo.SP1.sql"
relativeToChangelogFile="false" splitStatements="true" stripComments="true" />
<sql>use master;</sql>
</changeSet>
</databaseChangeLog>