DB서버 분리 이후 INSERT > SELECT CURRVAL 사용시 발생한 오류.
INSERT한 세션에서 CURRVAL를 할 값이 없으면 나오는 오류인데, 처음에 해당 오류가 발생한다는 게 실제 서비스 중인 서버에서 발생하는 줄 알았다. 실 서비스 하는 서버에서는 pgpool을 적용하지 않아서 커밋 관련 이슈인가 했는데, pgpool로 DB서버에 접근하게 한 서버에서 그런다고 해서 pgpool 설정을 보니 currval 사용시 마스터DB를 보게 되어 있지 않았다.
black_function_list = 'currval,lastval,nextval,setval'
수정 후 pgpool을 재시작 해주고 정상 처리 되는 걸 확인 했다.
이후에 마스터DB로 바로 SELECT를 해야 하는 경우를 대비해서 아무 동작이 없는 함수를 아래처럼 만들고, 해당 함수도 black_function_list에 추가 했다.
CREATE OR REPLACE FUNCTION go_master()
RETURNS void
LANGUAGE plpgsql
AS $function$
DECLARE
BEGIN
RETURN;
END
$function$;
반응형