Heim >Backend-Entwicklung >Golang >Wie kann der Fehler „Unterminated Dollar-Quoted String' beim Erstellen von PostgreSQL-Funktionen in Goose behoben werden?
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!