Database/PostgreSQL
PostgreSQL: Int id 충돌 문제 # auto increasement error # duplicate key value violates unique constraint
taltal
2025. 1. 3. 23:01
728x90
반응형
PostgreSQL에서 int pk를 auto increment (숫자 자동 증가)로 부여하는 경우,
종종 존재하는 id로 row를 추가하려는 경우가 있다.
예시 오류
SQLSTATE[23505]: Unique violation: 7 ERROR: duplicate key value violates unique constraint "pages_pkey"
DETAIL: Key (id)=(4) already exists.
-> id auto increment를 마지막 int부터 다시 시작하도록 설정
psql shell을 진입 - 해당 데이터 베이스 사용 (\c database_name)
1.현재 sequence value를 확인하자
(참고: table 명이 pages 인 경우이다)
SELECT last_value, is_called FROM pages_id_seq;
2. sequence를 현재 존재하는 최대 값의 id부터 시작하도록 sql query 작성
SELECT setval('pages_id_seq', (SELECT COALESCE(MAX(id), 0) FROM pages));
-> 1의 명령어로 변경사항 확인
참고 블로그:
https://www.vincentschmalbach.com/postgresql-sequence-error-manual-inserts-disrupt-auto-increment/
728x90
반응형