Heim >Backend-Entwicklung >Golang >Wie behebt man den Fehler „Unterminated Dollar-Quoted String' beim Erstellen von PostgreSQL-Funktionen mit Goose?
Beim Versuch, eine Funktion mit Goose mithilfe einer PostgreSQL-Datenbank zu erstellen, kann es vorkommen, dass Fehler:
(pq: unterminated dollar-quoted string at or near "$BODY$ BEGIN LOOP -- first try to update the key UPDATE userslocations SET count = count+1 WHERE userid = user_id AND locationid = location_id; ")
Dieser Fehler entsteht durch das Vorhandensein von Semikolons in der SQL-Anweisung. Goose erwartet, dass komplexe Anweisungen, einschließlich solcher mit Semikolons, mit spezifischen Kommentaren versehen werden.
Um das Problem zu lösen, kommentieren Sie die Anweisung wie folgt:
<code class="sql"> 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;</code>
Die -- goose-AnweisungBegin und - - goose StatementEnd-Kommentare weisen Goose an, die Anweisung korrekt zu verarbeiten, wodurch das Problem mit nicht abgeschlossenen Zeichenfolgen in Dollar-Anführungszeichen vermieden wird.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Unterminated Dollar-Quoted String' beim Erstellen von PostgreSQL-Funktionen mit Goose?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!