>  기사  >  백엔드 개발  >  Goose로 PostgreSQL 함수를 생성할 때 \"종료되지 않은 달러 인용 문자열\" 오류를 수정하는 방법은 무엇입니까?

Goose로 PostgreSQL 함수를 생성할 때 \"종료되지 않은 달러 인용 문자열\" 오류를 수정하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-03 11:08:02313검색

How to Fix

Goose로 PostgreSQL 함수를 생성할 때 "Unterminating Dollar-Quoted String" 오류 문제 해결

PostgreSQL 데이터베이스를 사용하여 Goose로 함수를 생성하려고 하면 다음과 같은 문제가 발생할 수 있습니다. 오류:

(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 명령문Begin 및 - - gooseStatementEnd 주석은 Goose가 명령문을 올바르게 처리하도록 지시하여 종결되지 않은 달러 인용 문자열 문제를 방지합니다.

위 내용은 Goose로 PostgreSQL 함수를 생성할 때 \"종료되지 않은 달러 인용 문자열\" 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.