Liquibase 错误 [Postgresql]:未终止的美元报价字符串等于或接近“$BODY$

2022-09-01 11:32:22
Liquibase error: unterminated dollar-quoted string at or near "$BODY$`

Chaneg log xml 有一个条目:请参阅下面的 include file=“/home/dev/....../admin_script.sql”

文件内容:

...............
CREATE OR REPLACE FUNCTION my_schema.function-name()
RETURNS smallint AS
$BODY$
   DECLARE
      v_next_gen_id smallint := 0;
   BEGIN
..........

例外:

liquibase.exception.DatabaseException: Error executing SQL CREATE OR REPLACE FUNCTION function name()
ETURNS smallint AS
$BODY$
   DECLARE
      v_next_gen_id smallint := 0: ERROR: unterminated dollar-quoted string at or near "$BODY$

感谢任何帮助来解决这个问题


答案 1

我几天前刚刚遇到同样的问题。

如果我们使用以下格式将变更集添加到更改日志.xml文件中,则不起作用:
<include file="path/to/sqlfile" />

为了解决这个问题,我使用另一种格式:

<changeSet author="authour_name" id="your_id">
    <sqlFile path="path/to/sqlfile" splitStatements="false"/>
</changeSet>

这是一个链接,它简要解释了美元引用后gresql的问题


答案 2

使用<创建过程>标记,而不是在定义中使用<sql><changeSet>


推荐