Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membetulkan Ralat \'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!