【问题标题】:Liquibase : Error executing SQL SET DEFINE OFFLiquibase:执行 SQL SET DEFINE OFF 时出错
【发布时间】:2013-07-22 03:27:05
【问题描述】:

我正在使用 liquibase 来执行 oracle 脚本。这个 oracle 脚本,正在执行合并到 oracle 的语句,这工作正常,但问题是我需要插入的数据有奇怪的字符,所以为了工作我们使用 SET DEFINE OFF(在文件的开头) 和 SET DEFINE ON(在文件末尾)以避免错误。

但如果我尝试在 liquiBase 中运行相同的脚本不起作用,我会收到此错误:

Liquibase Update Failed: Error executing SQL SET DEFINE OFF

我的变更日志如下所示:

<changeSet author="e-ballo" id="nopa_data_email" dbms="oracle" >
    <sqlFile path="email/NOPA_ACTIVATE_SECURITY.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true" />

有人知道如何避免这个问题吗?

提前致谢

【问题讨论】:

    标签: sql oracle liquibase


    【解决方案1】:

    SET DEFINE 不是 SQL,而是 SQL*Plus 命令。 SQL*Plus 是 Oracle 专有客户端,大多数其他客户端(例如 IDE)无法识别其命令。

    Liquibase 论坛建议使用 CDATA 作为传递非标准字符的最佳方式。 Find out more.

    【讨论】:

    • 你能详细说明如何使用 Liquibase 从脚本中跳过这个吗?
    • @JITHIN - 抱歉,我接触 Liquibase 已经有好几年了,我不记得细节了。几个笔记。如果您愿意为许可证付费,FlywayDB Pro 支持 SQL*Plus。 Check it out。虽然如果您已经在使用 Liquibase,这并没有太大帮助,而且我认为不值得迁移:如果您使用 SQL 格式脚本运行 Liquibase,那么从 FlywayDB 中没有什么可取之处。
    • 另外@thatjeffsmith 开玩笑说,Oracle 将很快将 Liquibase 与 sqlcl 集成,其中将包括您最喜欢的 SQL*Plus 命令。 Find out more
    猜你喜欢
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    相关资源
    最近更新 更多