Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

PostgreSQL 생성 ID 중복? setval 전에 시퀀스 불일치를 증명하세요

제약 조건과 충돌 값을 읽고 키 생성자와 소유 시퀀스를 확인한 뒤 writer를 멈추고 좁게 복구하세요. 비즈니스 키 중복이나 경쟁은 다른 수정이 필요합니다.

비즈니스 키 충돌과 시퀀스 불일치를 구분하는 원본 그림.
원본 일러스트: 키와 생성자를 먼저 식별합니다. Watch at Ease

중복 키 오류는 제약 값이 이미 있음을 증명할 뿐 기본 키 시퀀스 오류를 증명하지 않습니다.

제약과 값을 보존하고 생성자를 확인한 뒤 통제된 writer 조건에서 테이블과 시퀀스를 비교하세요.

제약과 충돌 값 보존

전체 오류, 제약, DETAIL, 문장 형태를 저장하세요. 비즈니스 키 중복은 시퀀스로 고칠 수 없습니다.

ID 명시 여부와 import, seed, restore, failover 변화를 기록합니다.

생성 메커니즘 증명

default/identity를 확인하고 pg_get_serial_sequence로 실제 소유 시퀀스를 찾습니다.

앱 제공 키나 복합 제약이면 retry, idempotency, 원본 데이터를 조사합니다.

진행 없이 상태 비교

MAX(id), last_value, is_called를 비교하고 검사 목적으로 nextval을 호출하지 마세요.

start, increment, 범위, cycle, 빈 테이블을 먼저 확인합니다.

writer 중지 후 표적 복구

유지보수 창에서 writer를 멈추세요. setval은 즉시 보이고 rollback되지 않습니다.

증명한 시퀀스만 복구하고 빈 테이블은 실제 start와 is_called=false를 사용합니다.

검증과 근본 원인 종료

ID를 생략한 통제 insert를 한 번 수행하고 새 키와 행을 확인합니다.

명시 ID load, replication, failover를 수정하고 재발 시 setval 반복을 중단합니다.

writer 중지, 표적 복구, 검증과 재발 조사를 보여 주는 그림.
원본 일러스트: 증명된 시퀀스 경계만 복구합니다. Watch at Ease