08003 connection does not exist 는?
PostgreSQL 에러 코드 08003은 클라이언트가 이미 존재하지 않는 데이터베이스 연결을 통해 쿼리나 트랜잭션 명령을 실행하려 할 때 발생합니다. 쉽게 말해, 연결이 서버 측에서 이미 종료되었거나 끊어진 상태인데 클라이언트는 그 사실을 인지하지 못한 채 해당 연결을 계속 사용하려는 상황입니다. 주로 커넥션 풀 환경, 장시간 유휴 상태의 연결, 또는 PREPARE TRANSACTION과 관련된 2단계 커밋(Two-Phase Commit) 흐름에서 자주 목격되는 에러입니다.
주요 발생 원인
1. 커넥션 풀에서 이미 끊어진 유휴 연결 재사용
PgBouncer, HikariCP, pg_pool 등 커넥션 풀러는 내부적으로 연결을 캐싱해두고 재사용합니다. PostgreSQL 서버 측에서 idle_in_transaction_session_timeout 또는 tcp_keepalives_idle 설정에 의해 해당 연결이 강제로 끊겼더라도, 풀러는 연결이 살아있다고 착각하고 애플리케이션에 해당 연결을 넘겨줄 수 있습니다. 이때 클라이언트가 쿼리를 실행하려 하면 08003 에러가 즉시 발생합니다.






