Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebe ich „Unterminated Dollar-Quoted String“-Fehler in PostgreSQL-Funktionen mit Goose?

Wie behebe ich „Unterminated Dollar-Quoted String“-Fehler in PostgreSQL-Funktionen mit Goose?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-02 15:10:03174Durchsuche

How to Resolve

Unterminierte Zeichenfolge in Dollar-Anführungszeichen: Fehler mit Semikolons beheben

Im Zusammenhang mit der Erstellung einer PostgreSQL-Funktion mit Goose befasst sich dieser Artikel mit einem Fehler Wird beim Verarbeiten einer komplexen Anweisung innerhalb des Funktionskörpers angetroffen. Der von der pq-Bibliothek gemeldete Fehler weist darauf hin, dass eine Zeichenfolge in Dollar-Anführungszeichen nicht abgeschlossen ist.

Um dieses Problem zu beheben, beachten Sie, dass komplexe Anweisungen mit Semikolons eine Annotation mit „--goose StatementBegin“ und „--goose“ erfordern StatementEnd"-Anmerkungen gemäß der Goose-Dokumentation. Diese Anmerkungen unterstützen Goose bei der Verwaltung eingebetteter Semikolons in SQL-Anweisungen und verhindern so libpq-Fehler.

Durch Anwenden dieser Anmerkungen auf das bereitgestellte Codebeispiel wird der Fehler behoben:

CREATE OR REPLACE FUNCTION add_userlocation(user_id INT, location_id INT) RETURNS VOID AS
$BODY$
-- +goose StatementBegin
BEGIN
    LOOP
        UPDATE userslocations SET count = count+1 WHERE userid = user_id AND locationid = location_id;
    IF found THEN
        RETURN;
    END IF;
    BEGIN
        INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1);
           RETURN;
       EXCEPTION WHEN unique_violation THEN
    END;
   END LOOP;
-- +goose StatementEnd
END;
$BODY$
LANGUAGE plpgsql;

Das obige ist der detaillierte Inhalt vonWie behebe ich „Unterminated Dollar-Quoted String“-Fehler in PostgreSQL-Funktionen mit Goose?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn