삽질/개발,엔지니어링

ERROR: currval of sequence "seq_table" is not yet defined in this session

maengis 2023. 2. 8. 14:07

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$;
반응형