【发布时间】:2017-06-13 15:59:54
【问题描述】:
我有一个要存储在数据库中的 HTML 文件。我为此使用 Liquibase,但在 HTML 中我有很多   实例。
问题是SQL不允许&在没有set define off选项的情况下运行。
我从网上了解到以下解决方案:
- 我读到我可以使用
cdata,但这里我插入的是 Liquibase SQL 格式的 HTML,而不是 XML 格式,所以我认为它没有用。 - 由于文件中有很多
 ,我不能为每个都使用ASCII字符来避免&。
Liquibase 执行出错:
SEVERE 6/7/17 11:30 AM:liquibase: Error executing SQL set define off
java.sql.SQLException: ORA-00922: missing or invalid option
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
我能做些什么来解决这个问题?
【问题讨论】:
-
SQL*Plus(和 SQL Developer)默认情况下会特别对待与符号,用于替换变量,并且他们有
set define命令来控制该行为。这与 SQL 无关。其他客户可能会模仿这种行为。您是否真的遇到了 Liquibase 问题,如果是,您可以编辑您的问题以显示实际发生的情况吗? -
@Alex,我添加了 liquibase 错误日志
-
对,因为
set define offis a SQL*Plus client command。如果您从脚本中删除它,Liquibase 是否真的会抱怨您插入的数据 - 它是否与 & 符号有问题? -
@Alex,我尝试在 SQL 开发人员中执行查询,但它没有执行并要求替换变量。对于 Liquibase,我没有尝试过不设置定义的查询。你的意思是,Liquibase 将在没有它的情况下执行查询?要不要试试?
-
SQL Developer(和 SQL*Plus,ans SQLcl)有替换变量的概念,并且有
set define命令来控制这些。所以你需要为那些关闭它。 Liquibase 不一样,该命令在那里不相关。当然,在没有set define off的情况下在 Liquibase 中尝试一下。