← 전체 글로 돌아가기

웹 개발

데이터베이스 unique 제약 때문에 에러가 날 때

마이그레이션 후 unique 제약이 걸려서 데이터 추가가 실패한다. 원본 데이터를 검사하고 제약을 적용하는 안전한 순서를 정리했다.

검색을 통해 발견한 unique 제약 문제는 보통 마이그레이션 단계에서 터진다. 기존 데이터에 중복이 있으면 제약을 적용할 수 없다.

상황 파악이 먼저

unique 제약 때문에 마이그레이션이 실패했다면, 먼저 현재 데이터 상태를 봐야 한다.

  • 어떤 컬럼에 중복이 있나: 정확히 뭐가 겹쳤는지
  • 얼마나 많은 행이 영향을 받나: 몇 개 고치면 되는 건지
  • 이전에 운영한 로직은 뭐였나: 왜 중복이 들어갔는지

빌드와 검증

먼저 빌드가 되는지 확인하자.

npm run build

해결 방법 정하기

중복을 제거하는 여러 방법이 있다. 데이터 손실을 최소화하면서 가장 안전한 방법을 선택해야 한다.

  1. 데이터에 어떤 중복이 있는지 정확히 파악한다
  2. 중복을 제거하는 방법을 정한다 (이전 데이터 우선, 최신 데이터 우선 등)
  3. 제약을 적용한 후 실제로 제대로 되는지 본다

기록해 두기

어떤 데이터가 어떻게 영향을 받았는지 남겨 두자. 비슷한 문제가 다시 생길 때 참고할 수 있다.