문제
중복 키 문제가 발생했다.
2025-10-14 19:55:42.113 [http-nio-6515-exec-7] ERROR c.w.s.e.GlobalExceptionHandler - [ERROR] PreparedStatementCallback; SQL [INSERT INTO deck_cards(deck_id, card_id, count)
VALUES
(?, ?, ?)
]; ERROR: duplicate key value violates unique constraint "deck_cards_pkey"
Detail: Key (id)=(1471) already exists.
이유
postgresql에서 id를 생성하기 위해 SEQUENCE에 요청을 한다. 그것은 'deck_cards_id_seq'와 같은 변수에 마지막 id를 저장해놓고, 거기에 1을 더해서 새로운 id를 생성한다. 그때 SEQUENCE를 사용하지 않고 tuple을 추가하고, seq 변수를 동기화 해주지 않으면 충돌이 일어난다.
해결 방법
아래 명령어를 통해서 강제로 seq를 동기화 시켜준다.
SELECT setval('deck_cards_id_seq', (SELECT MAX(id) FROM deck_cards));
활용
분산 DB에서 간단하게 서로 다른 id를 생성하게 하고 싶을 때, seq 시작을 다르게 하여 id 충돌을 피할 수 있을 것이다.