【问题标题】:Liquibase - execute multiple pl/sql packagesLiquibase - 执行多个 pl/sql 包
【发布时间】:2021-01-19 04:55:15
【问题描述】:

早上好, 我正在创建我的 Liquibase 更改日志,以便能够一键部署 Oracle 对象。

在我的项目中,我们有许多包以 pkb/pks 的形式保存在文件系统中(但我们也可以将它们保存为 sql)..

我想将 liquibase 配置为每次运行任务时始终执行包文件。

我找到了标签 includeALL .. 但这只会在文件属于路径时执行..

我怎样才能每次都执行它们?

我试过这样的

<changeSet id="01f11a6b-a473-4edc-bcc7-acfa802f4b48" author="deployment" runAlways="true">
    <includeAll path="${url}/Database_Objects/"/>
</changeSet>

但我得到了错误..

感谢帮助

Liquibase 版本

dependencies {
    classpath "org.liquibase:liquibase-core:3.4.1"
    classpath "org.liquibase:liquibase-gradle-plugin:1.1.1"
    classpath "com.oracle:ojdbc6:11.2.0.4"
}

注意:我正在通过 Gradle /IntelliJ 运行 liquibase

【问题讨论】:

  • 能否添加运行变更集时遇到的错误

标签: oracle liquibase liquibase-sql


【解决方案1】:

&lt;includeAll&gt;&lt;include&gt;标签不能包含在具有runAlways属性的changeSet标签中。要实现sql文件始终运行,您需要查找以下标签。 SqlFile tag

【讨论】:

  • 感谢您的评论 .. 不幸的是它没有给出解决方案 :( 我需要执行几个包含包声明的 sql 文件 ..
【解决方案2】:

感谢您的评论..不幸的是它没有给出解决方案:(我需要执行几个包含包声明的 sql 文件..

我什至尝试将所有文​​件合并到一个..但仍然得到

“原因:java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement”当我尝试执行时

这是我在更新日志上放的内容

<changeSet  author="deployment"  id="d4ad73ec-8fd4-4d4c-8590-b6ed9eec609f" runAlways="true" context="Fix">
    <sqlFile  dbms="oracle"
              encoding="UTF-8"
              endDelimiter="/\n"
              path="${url}/50_db_objects.sql"
              relativeToChangelogFile="false"
              splitStatements="true"
              stripComments="false"/>
</changeSet>

然后在 50_db_objects.sql 我有类似的东西

create or replace package body xxxxx as
.....
end xxxxx ;
/
    
    
create or replace package body xxxxx2 as
.....
end xxxxx2 ;
/

【讨论】:

    【解决方案3】:

    尝试在您的变更集声明中设置 splitStatements="false"。通过设置“true”,您告诉 liquibase 它应该分别执行每个命令,并且这些命令由“;”分隔默认。

    <changeSet  author="deployment"  id="d4ad73ec-8fd4-4d4c-8590-b6ed9eec609f" runAlways="true" context="Fix">
        <sqlFile  dbms="oracle"
                  encoding="UTF-8"
                  endDelimiter="/\n"
                  path="${url}/50_db_objects.sql"
                  relativeToChangelogFile="false"
                  splitStatements="false"
                  stripComments="false"/>
    </changeSet>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 2019-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多