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 중국어 웹사이트의 기타 관련 기사를 참조하세요!