DATABASE/MySql 실습

[sql] error code 1062.Deuplicate entry, unique 설정, 중복데이터 방지

코끼리똥11 2024. 5. 20. 14:26

MySQL에서 오류 코드 1062는 "중복 키" 오류를 나타낸다. 이 오류는 데이터베이스에서 고유한 값을 가져야 하는 열에 중복된 값을 삽입하려고 할 때 발생한다.

  1. 고유한 제약 조건 위반: 데이터베이스에 설정된 고유한(unique) 제약 조건을 위반하여 중복된 값이 삽입되는 경우입다. 예를 들어, PRIMARY KEY 또는 UNIQUE INDEX가 설정된 열에 중복된 값을 삽입하려고 할 때 발생한다.
  2. INSERT 쿼리 중복: INSERT 쿼리를 실행할 때 이미 테이블에 존재하는 값을 삽입하려고 할 때 발생한다.
  3. 복제 중복: MySQL 복제 시에 마스터와 슬레이브 간 데이터의 불일치로 인해 중복된 값을 삽입하려고 할 때 발생한다.

이 오류를 해결하려면 중복된 값을 삽입하지 않도록 데이터베이스 스키마를 검토하고, INSERT 문을 실행하기 전에 데이터를 확인하여 중복을 방지해야 한다. 때로는 데이터를 수정하여 고유한 값을 가져야 하는 열에 중복이 발생하지 않도록 할 수도 있다.

 

회원가입같은 데이터를 처리할때 중복된 회원이 중복으로 가입 하는걸 방지하기 위해 unique 처리를 해야한다. unique는 

데이터베이스에서 특정 열의 값을 고유하게 유지해야 함을 나타내는 제약 조건이다. 이는 해당 열에 중복된 값을 허용하지 않는다는 것을 의미한다. 

 

abc@naver.com 이라는 데이터가 이미 있을때  아무런 설정을 안하면 abc@naver.com  데이터를 추가했을때 데이터가 중복으로 들어간다. 이러면 유저가 동일한 이메일로 무한으로 회원가입을 할 수 있다. 이를 방지하기위해 

email 컬럼에 UQ(unique) 설정을 해주면 

error code 1062 에러가 뜨면서 동일한 데이터가 들어가는걸 방지할 수 있다.