postgres迁移错误; 未终止的美元引用字符串

iva*_*one 5 java postgresql database-migration maven-3

嗯,这很奇怪,任何人都可以帮我指出这个功能可能出错的地方.我有一个类似的功能

CREATE FUNCTION check_password(uname TEXT, pass TEXT)
RETURNS BOOLEAN AS $$
DECLARE passed BOOLEAN;
BEGIN
        SELECT  (pwd = $2) INTO passed
        FROM    pwds
        WHERE   username = $1;

        RETURN passed;
END;

$$  LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)

当我直接在pgAdmin sql控制台中运行它时,没有错误,但使用db-migration-maven-plugin在迁移脚本中运行它我得到了错误.

Error executing: CREATE FUNCTION check_password(uname TEXT, pass TEXT) 
                 RETURNS BOOLEAN AS $$ DECLARE passed BOOLEAN
org.postgresql.util.PSQLException: ERROR: unterminated dollar-quoted 
                        string at or near "$$ DECLARE passed BOOLEAN"
Position: 74
Run Code Online (Sandbox Code Playgroud)

Den*_*rdy 2

迁移脚本生成的 SQL 中可能包含某种$$引号,这些引号会在某处解释为字符串。

一个快速而肮脏的修复可能是更改$$$func$$check_password$,尽管可能还有其他函数遇到同样的问题。

更好、更长远的方法是找到违规者$$