> 백엔드 개발 > Golang > Goose에서 PostgreSQL 함수를 생성할 때 종료되지 않은 달러 인용 문자열 오류를 해결하는 방법은 무엇입니까?

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

Susan Sarandon
풀어 주다: 2024-11-02 16:09:29
원래의
748명이 탐색했습니다.

How to Resolve the Unterminated Dollar-Quoted String Error When Creating PostgreSQL Functions in Goose?

Goose에서 종료되지 않은 달러 인용 문자열 오류: PostgreSQL 함수 생성 문제 해결

Goose를 사용하여 PostgreSQL에서 함수를 생성하려고 하면 종료되지 않은 달러 인용 문자열과 관련된 오류가 발생할 수 있습니다. 이 오류는 일반적으로 함수의 SQL 문에 문자열을 분리하는 세미콜론이 포함되어 있을 때 발생합니다.

이 문제를 해결하려면 Goose 사용자는 이러한 복잡한 문에 -- gooseStatementBegin 및 --gooseStatementEnd로 주석을 달아야 합니다. 이러한 주석은 명령문을 더 작은 덩어리로 분리하여 Goose가 이를 올바르게 처리할 수 있도록 합니다.

특정 사례의 경우 코드에는 UPDATE 및 INSERT 문에 세미콜론이 포함됩니다. 따라서 주석이 달린 코드는 다음과 같이 나타나야 합니다.

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;
-- +goose StatementEnd
    IF found THEN
        RETURN;
    END IF;
-- +goose StatementBegin
    BEGIN
        INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1);
        RETURN;
    EXCEPTION WHEN unique_violation THEN
-- +goose StatementEnd
    END;
    END LOOP;
END;
$BODY$
LANGUAGE plpgsql;
로그인 후 복사

이러한 주석이 추가되면 Goose는 종료되지 않은 문자열 오류 없이 SQL 문을 올바르게 처리하고 함수를 생성할 수 있습니다. 명령문에 세미콜론이 포함되어 있는 경우 Goose 및 pq 라이브러리와의 호환성을 보장하려면 이러한 주석을 추가하는 것이 중요합니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿