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이 꼭 필요하다는 것이 공통적인 답변이였습니다.
해결법
- 프로시저 내부에 commit을 추가한다.
- pyscopg2에 autocommit=True 를 추가한다.
728x90
'DataBase' 카테고리의 다른 글
[DataBase] RDBMS 이관 PostgreSQL to MySQL, 여러가지 방법과 에러 정리 (0) | 2023.09.29 |
---|---|
[DataBase] Oracle DBMS Synonym (Public, Private)개념과 실습 (0) | 2023.02.15 |
[Database] PostgreSQL 데이터 타입 정리 (0) | 2022.09.01 |
[Database] Oracle 시스템 카탈로그 추출하기, 테이블 , 컬럼, 코맨트 정보 확인하기 (0) | 2022.08.23 |
[Database] Upsert란? DBMS 별 Upsert 예제 (0) | 2022.06.27 |
댓글