DB
DB unique 제약으로 에러가 날 때
데이터베이스 unique 제약 조건 때문에 저장이 실패할 때 확인하는 순서.
unique 제약은 의도한 대로만 작동해야 한다. 헷갈리는 경우가 많다.
혼자 개발할수록, 확인한 값과 바꾼 값을 따로 남기는 습관이 중요하다. 그래야 나중에 왜 이렇게 했는지 알 수 있다.
왜 unique 제약인가
같은 값이 중복으로 저장되면 안 되는 이유는? 이메일? 사용자 이름? 이것부터 명확히 하자.
재현 조건
어떤 상황에서 unique 제약 에러가 나는가? 같은 데이터를 두 번 저장할 때? 아니면 특정 조건에서만?
- 에러 메시지 정확히 읽기
- 스키마에서 unique 설정 확인
- 이전 데이터에 같은 값이 있는가
스키마 확인
npx prisma validate
npx prisma migrate status
스키마가 의도대로 정의되어 있는가? unique 인덱스는 제대로 생성되었는가?
데이터 확인하기
이미 저장된 데이터를 확인해보자. 정말로 중복이 없는가? nullable 필드라면 null 값은 몇 개인가?
마이그레이션 검토
새로 추가한 제약이 기존 데이터와 충돌하진 않는가? 마이그레이션 파일을 다시 살펴보자.
다음에 비슷한 증상이 나오면 먼저 현재 값을 기록하고, 하나씩 비교하면 된다.