본문 바로가기
DBMS/PostgreSQL

[PostgreSQL] ERROR: current transaction is aborted 에러 해결 법

by 드바 2024. 4. 7.

 


DBMS: PostgreSQL 14.9

 

- BEGIN 명령을 통한 트랜잭션 진행 중 ERROR 발생 시 이후 모든 명령은 에러 발생함
ERROR: current transaction is aborted, commands ignored until end of transaction block
- commit 또는 rollback 후 정상 작동

 

[목차여기]

테스트 테이블 생성

postgres=# create table t1 as select * from pg_tables ;
SELECT 66
postgres=# 
postgres=# select count(*) from t1 ;
 count 
-------
    66
(1 row)

 

테스트

postgresql은 기본 autocommit 으로 작동합니다.
수동으로 begin 명령을 사용하여 트랜잭을 시작하면 commit 또는 rollback 수행 전까지 하나의 트랜잭션으로 수행됩니다
 
테스트에서 트랜잭션 시작 후 SQL구문을 틀려 에러를 유발합니다.
이후 동일세션의 모든 명령은
"ERROR:  current transaction is aborted, commands ignored until end of transaction block"
에러 발생합니다.
 
commit / rollback 으로 트랜잭션 종료하면 정상 작동 합니다

-- 트랜잭션을 걸어준다
postgres=# begin ;
BEGIN

-- 에러 유발
postgres=*# delete fro t1 ;
ERROR:  syntax error at or near "fro"
LINE 1: delete fro t1 ;
               ^

-- 에러 발생 후 해당 세션에서의 모든 명령어가 실행 불가함
postgres=!# select count(*) from t1 ;
ERROR:  current transaction is aborted, commands ignored until end of transaction block


-- rollback(트랜잭션 종료) 후 명령어 정상 수행
postgres=!# rollback ;
ROLLBACK
postgres=# select count(*) from t1 ;
 count
-------
    66
(1 row)

 

댓글