是否可以更改 Liquibase 中变更集之间的数据库连接?

问题描述 投票:0回答:3

我研究过Liquibase

changesets
customChange
contexts
,但是在阅读了这几天的材料后,我仍然没有找到可以帮助我完成任务的答案我想做。

基本上,我有想要通过 Liquibase 运行的数据库更改脚本。这就是我拥有的。

  1. script1.sql
    • DROP MATERIALIZED VIEW LOG on TABLE1
  2. script2.sql
    • DROP MATERIALIZED VIEW TABLE1

script1.sql
应在某个
DB1
上运行,而
script2.sql
应在某个
DB2
上运行。
DB1
DB2
的数据库 URL 为:

  1. DB1
    'jdbc:oracle:thin:@db_host:1521:DB1'
  2. 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
之间的连接?

java sql oracle gradle liquibase
3个回答
0
投票

据我所知,您可能需要 2 个不同的

liquibase.properties
文件来指定数据库 URL。另外,如果您仅使用 1 个变更日志文件,则可以使用 labels,这将只允许标记的变更集针对指定的数据库运行。


0
投票

我也在 Liquibase 论坛上回答过这个问题...

您无法在 Liquibase 执行中更改连接。

我建议分成两个变更日志并运行两个 Liquibase 部署,一个用于 DB1,一个用于 DB2。


0
投票

我知道这是一个旧线程,但对于寻找方法的人来说,这就是我所做的

  1. 将连接字符串(jdbc url)保留在要掌握的属性中(或您喜欢的任何数据库)
Enter the Target database 'url' information
liquibase.command.url=jdbc:sqlserver://localhost;database=master;applicationname=LiquibasePoC;encrypt=false;trustServerCertificate=false
  1. 使用标签来翻转每个变更集的数据库。像这样:
 <?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>
© www.soinside.com 2019 - 2024. All rights reserved.