Heim >Backend-Entwicklung >Golang >Wie behebt man den Fehler „Unterminated Dollar-Quoted String' beim Erstellen von PostgreSQL-Funktionen mit Goose?

Wie behebt man den Fehler „Unterminated Dollar-Quoted String' beim Erstellen von PostgreSQL-Funktionen mit Goose?

DDD
DDDOriginal
2024-11-03 11:08:02393Durchsuche

How to Fix

Fehlerbehebung des Fehlers „Unterminated Dollar-Quoted String“ beim Erstellen einer PostgreSQL-Funktion 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!

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