ホームページ > バックエンド開発 > Golang > Goose で PostgreSQL 関数を作成するときに発生する「Unterminated Dollar-Quoted String」エラーを修正する方法

Goose で PostgreSQL 関数を作成するときに発生する「Unterminated Dollar-Quoted String」エラーを修正する方法

DDD
リリース: 2024-11-03 11:08:02
オリジナル
336 人が閲覧しました

How to Fix

Goose で PostgreSQL 関数を作成する際の「終了していないドル引用文字列」エラーのトラブルシューティング

PostgreSQL データベースを使用して Goose で関数を作成しようとすると、次のような問題が発生する場合があります。 error:

(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;
")
ログイン後にコピー

このエラーは、SQL ステートメント内にセミコロンが存在するために発生します。 Goose は、セミコロンを含む複雑なステートメントに特定のコメントの注釈が付けられることを期待します。

問題を解決するには、次のようにステートメントに注釈を付けます。

<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>
ログイン後にコピー

-- goose StatementBegin と - - goose StatementEnd コメントは、Goose にステートメントを正しく処理するよう指示し、終了していないドル引用符で囲まれた文字列の問題を防ぎます。

以上がGoose で PostgreSQL 関数を作成するときに発生する「Unterminated Dollar-Quoted String」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート