首頁 > 後端開發 > Golang > 主體

使用 Goose 建立 PostgreSQL 函數時如何修復「未終止的美元引用字串」錯誤?

DDD
發布: 2024-11-03 11:08:02
原創
312 人瀏覽過

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 函數時如何修復「未終止的美元引用字串」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板