Maison > développement back-end > Golang > Comment corriger l'erreur « Chaîne non terminée en dollars cités » lors de la création de fonctions PostgreSQL avec Goose ?

Comment corriger l'erreur « Chaîne non terminée en dollars cités » lors de la création de fonctions PostgreSQL avec Goose ?

DDD
Libérer: 2024-11-03 11:08:02
original
336 Les gens l'ont consulté

How to Fix

Dépannage de l'erreur « Chaîne non terminée en dollars cités » lors de la création d'une fonction PostgreSQL avec Goose

Lorsque vous essayez de créer une fonction avec Goose à l'aide d'une base de données PostgreSQL, vous pouvez rencontrer le problème erreur :

(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;
")
Copier après la connexion

Cette erreur est due à la présence de points-virgules dans l'instruction SQL. Goose s'attend à ce que les déclarations complexes, y compris celles comportant des points-virgules, soient annotées avec des commentaires spécifiques.

Pour résoudre le problème, annotez la déclaration comme suit :

<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>
Copier après la connexion

La -- goose StatementBegin et - - Les commentaires de Goose StatementEnd demandent à Goose de gérer la déclaration correctement, évitant ainsi le problème avec les chaînes non terminées entre guillemets en dollars.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal