Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membetulkan Ralat \'Unterminated Dollar-Quoted String\' Apabila Mencipta Fungsi PostgreSQL dengan Goose?

Bagaimana untuk Membetulkan Ralat \'Unterminated Dollar-Quoted String\' Apabila Mencipta Fungsi PostgreSQL dengan Goose?

DDD
DDDasal
2024-11-03 11:08:02393semak imbas

How to Fix

Menyelesaikan masalah "Unterminated Dollar-Quoted String" Apabila Mencipta Fungsi PostgreSQL dengan Goose

Apabila cuba mencipta fungsi dengan Goose menggunakan pangkalan data PostgreSQL, anda mungkin menghadapi ralat:

(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;
")

Ralat ini timbul kerana kehadiran koma bertitik dalam pernyataan SQL. Goose menjangkakan penyataan yang rumit, termasuk yang mempunyai koma bertitik, akan diberi anotasi dengan ulasan khusus.

Untuk menyelesaikan isu itu, nyatakan pernyataan seperti berikut:

<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>

Pernyataan -- angsa Mulakan dan - - Komen angsa StatementEnd mengarahkan Goose untuk mengendalikan kenyataan dengan betul, menghalang isu dengan rentetan petikan dolar yang tidak ditamatkan.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Unterminated Dollar-Quoted String\' Apabila Mencipta Fungsi PostgreSQL dengan Goose?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn