본문 바로가기
DataBase

[Database] Redshift Procedure를 airflow로 제출하기 (error 정리)

by 스파이디웹 2023. 10. 20.
728x90

에러

airflow에서 redshift를 pyscogp2를 이용하여 연결하고, procedure를 제출했는데, 다음과 같은 에러가 있었다.

psycopg2.errors.InvalidTransactionTermination: ROLLBACK cannot be invoked from a procedure that is executing in an atomic context.
HINT:  Try calling the procedure as a top-level call i.e. not from within an explicit transaction block. Or, if this procedure (or one of its ancestors in the call chain) was created with SET config options, recreate the procedure without them.

관련해서 구글링을 해보니,

프로시저를 사용할 때는 Execute구문 이후에는 Commit이 꼭 필요하다는 것이 공통적인 답변이였습니다.

 

해결법

  1. 프로시저 내부에 commit을 추가한다.
  2. pyscopg2에 autocommit=True 를 추가한다.

 

728x90

댓글