微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Liquibase-执行多个pl / sql包

如何解决Liquibase-执行多个pl / sql包

早上好, 我正在创建我的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

解决方法

不能将

<includeAll><include>标记包含在具有runAlways属性的changeSet标记中。要始终运行sql文件,必须始终查找以下标记。 SqlFile tag

,

感谢您的评论..很遗憾,它没有提供解决方案:(我需要执行几个包含程序包声明的SQL文件..

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

当我尝试执行时,“原因:java.sql.SQLSyntaxErrorException:ORA-00900:无效的SQL语句”

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

<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 ;
/
,

尝试在您的变更集声明中设置 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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。