Bagaimana untuk Membetulkan Ralat \'Unterminated String\' Apabila Mencipta Prosedur Tersimpan dengan Goose dan PostgreSQL?

Patricia Arquette
Lepaskan: 2024-11-03 01:30:29
asal
751 orang telah melayarinya

How to Fix the

Postgres Goose Menaikkan Ralat Rentetan Tidak Ditamatkan

Isu

Apabila cuba mencipta prosedur tersimpan dengan Goose menggunakan pangkalan data PostgreSQL, proses tersebut menghadapi perkara berikut 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;
"), quitting migration.
Salin selepas log masuk

Sebab

Ralat Goose yang bergema daripada perpustakaan pq menunjukkan SQL tersalah format. Khususnya, pernyataan kompleks yang mengandungi koma bertitik memerlukan anotasi khas dalam Goose:

Resolusi

Untuk membetulkan ralat, anotasi SQL dengan cara berikut:

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;
Salin selepas log masuk

Dengan mengisytiharkan permulaan dan akhir setiap pernyataan, Goose diarahkan untuk mengendalikan SQL dengan betul, menyelesaikan ralat rentetan yang tidak ditamatkan.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!