Beh, questo è un po 'strano, qualcuno potrebbe aiutarmi a sottolineare dove questa funzione potrebbe essere sbagliata. Ho una funzione simile a quellaerrore di migrazione postgres; stringa non quotata in dollari
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
quando l'eseguo direttamente nella console SQL pgAdmin, non ci sono errori, ma in esecuzione in uno script di migrazione utilizzando db-migrazione-maven-plugin ottengo l'errore.
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
Spiacenti, di fronte lo stesso problema ora. Hai trovato il modo di risolverlo? –
Ho evitato di scrivere funzioni lunghe tutte insieme. È un problema con il software di migrazione (carbonfive). Ho pensato di apportare alcune modifiche ad esso poiché è opensourced ma non ho tempo. – ivanorone
Ho ricevuto un messaggio di errore simile utilizzando Aqua Data Studio, che utilizza il driver JDBC di Redshift. Nel mio caso, la soluzione era andare su "Opzioni" e deselezionare "; Separatore di istruzioni '. Sembra che il parser presupponesse che il primo punto e virgola fosse la fine dell'intera definizione di funzione, e non aveva ancora visto il closing $$. La funzione di esempio è stata creata senza errori sul mio sistema (versione 9.5) quando quella casella era deselezionata. Con il '; Separatore di istruzioni 'spuntato, ho avuto lo stesso errore. Spero che questo aiuti. – Jason