Ну, это странно, может ли кто-нибудь помочь мне указать, где эта функция может быть неправильной. У меня есть функция, похожая наошибка миграции postgres; строка с неисполненным долларом
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
Когда я запустить его непосредственно в SQL консоли pgAdmin, нет никаких ошибок, но запустить его в сценарии миграции с помощью DB-миграционного-Maven-плагин я получаю сообщение об ошибке.
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
Извините, перед лицом той же проблемы сейчас. Вы нашли способ исправить это? –
Я избегал писать длинные функции вместе. Это проблема с программным обеспечением для миграции (carbonfive). Я подумал о том, чтобы внести в него несколько изменений, поскольку он открыт, но у него нет времени. – ivanorone
Я получил аналогичное сообщение об ошибке, используя Aqua Data Studio, в котором используется драйвер Redshift JDBC. В моем случае исправление заключалось в том, чтобы перейти в «Настройки» и «Отменить»; Разделитель сообщений. Похоже, что синтаксический анализатор предположил, что первая точка с запятой была окончанием определения всей функции, и она еще не видела закрытия $$. Ваша функция примера была создана без ошибок в моей системе (версия 9.5), когда эта ячейка не была отмечена галочкой. С '; Отметив галочку «Сепаратор», я получил ту же ошибку. Надеюсь, что помогает. – Jason