Liquibase错误:未结合美元引用的字符串在"$ BODY $"或附近
Chaneg log xml有一个条目:见下面包括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
..........
Run Code Online (Sandbox Code Playgroud)
例外:
liquibase.exception.DatabaseException:执行SQL时出错CREATE OR REPLACE FUNCTION函数名称()ETURNS smallint AS $ BODY $ DECLARE v_next_gen_id smallint:= 0:错误:未终止的美元引用字符串处于或接近"$ BODY $
感谢您解决此问题的任何帮助
coo*_*ool 26
以下解决方案来自Liquibase 官方论坛。
如果你想完全使用 SQL 变更日志,这个解决方案可以很好地工作(经过测试和确认):
如果您使用的是 SQL Changelog 文件,则可以将$Sign with Single Quote 替换为 Sign with Single Quote,并将 Single Quote 替换为双单引号''
那么详细说明一下:
$将'$BODY$将''将''例子:
CREATE OR REPLACE FUNCTION public.testingfunctions()
RETURNS TABLE("DistributorCode" character varying)
LANGUAGE plpgsql
AS '
begin
RETURN QUERY
select * from testtable;
-- .
-- .
-- . somewhere in the function
RAISE NOTICE ''OPEN deleted customer_avatar'';
END;'
Run Code Online (Sandbox Code Playgroud)
我刚刚在几天前遇到过同样的问题.
如果我们使用以下格式将changeset添加到changelog.xml文件中,它将不起作用:
<include file="path/to/sqlfile" />
为了解决,我使用另一种格式:
<changeSet author="authour_name" id="your_id">
<sqlFile path="path/to/sqlfile" splitStatements="false"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
这是一个链接,它给出了带有美元引用的postgresql问题的简要解释.
| 归档时间: |
|
| 查看次数: |
3383 次 |
| 最近记录: |