Heim >Backend-Entwicklung >Golang >Wie kann der Fehler „Unterminated Dollar-Quoted String' beim Erstellen von PostgreSQL-Funktionen in Goose behoben werden?

Wie kann der Fehler „Unterminated Dollar-Quoted String' beim Erstellen von PostgreSQL-Funktionen in Goose behoben werden?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 16:09:29692Durchsuche

How to Resolve the Unterminated Dollar-Quoted String Error When Creating PostgreSQL Functions in Goose?

Unterminated Dollar-Quoted String Error in Goose: Beheben von Problemen bei der Erstellung von PostgreSQL-Funktionen

Beim Versuch, eine Funktion in PostgreSQL mit Goose zu erstellen, haben Sie Möglicherweise tritt ein Fehler auf, der mit einer nicht abgeschlossenen Zeichenfolge in Dollar-Anführungszeichen zusammenhängt. Dieser Fehler wird normalerweise ausgelöst, wenn die SQL-Anweisung der Funktion Semikolons enthält, die die Zeichenfolge unterbrechen.

Um dieses Problem zu beheben, müssen Goose-Benutzer diese komplexen Anweisungen mit --goose StatementBegin und --goose StatementEnd annotieren. Diese Anmerkungen unterteilen die Anweisung in kleinere Abschnitte, sodass Goose sie korrekt verarbeiten kann.

In Ihrem speziellen Fall enthält der Code Semikolons in den UPDATE- und INSERT-Anweisungen. Daher sollte der mit Anmerkungen versehene Code wie folgt aussehen:

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;
-- +goose StatementEnd
    IF found THEN
        RETURN;
    END IF;
-- +goose StatementBegin
    BEGIN
        INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1);
        RETURN;
    EXCEPTION WHEN unique_violation THEN
-- +goose StatementEnd
    END;
    END LOOP;
END;
$BODY$
LANGUAGE plpgsql;

Sobald diese Anmerkungen hinzugefügt wurden, kann Goose die SQL-Anweisung ordnungsgemäß verarbeiten und die Funktion erstellen, ohne dass der Fehler „nicht abgeschlossene Zeichenfolge“ auftritt. Denken Sie daran: Wenn Ihre Anweisungen eingebettete Semikolons enthalten, ist es wichtig, diese Anmerkungen hinzuzufügen, um die Kompatibilität mit Goose und der pq-Bibliothek sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Unterminated Dollar-Quoted String' beim Erstellen von PostgreSQL-Funktionen in Goose behoben werden?. 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