MySQL
MySQL - Error Code: 1062. Duplicate entry 가 나오는 이유 / 해결방법
Cong_S
2022. 5. 18. 17:57
select * from user;
insert into user
(email, password, name)
values
('abc@naver.com', '1234qwer', '전호호' );
Error Code: 1062. Duplicate entry 가 나오는 이유에 대해 알아보자.
보통 이 경우는 컬럼 중에 하나가 unique 타입일 때 발생하게 된다.
해당 컬럼에 현재 입력된 데이터의 값이 이미 존재한다는 뜻이다.
보통의 경우 중복값을 피하기 위해 다른 값을 입력하겠지만
때에 따라 중복값을 무시하고 진행해야할 때가 있으니
그 방법에 대해 알아보자.
1. ignore
INSERT IGNORE INTO user
(`email`, `name`)
VALUES
('abc@naver.com', '전호호');
만약 중복이 발생한다면 지금 삽입하려는 ROW를 무시한 후에 기존의 ROW만 남기는 방식이다.
2. REPLACE INTO
REPLACE INTO user
(`email`, `name`)
VALUES
('abc@naver.com', '전호호');
기존의 ROW는 삭제되고 지금 실행하는 ROW가 삽입된다. (이 때문에 2 rows affected 가 나온다.)
따라서 Primary Key로 Auto Increment 옵션을 사용하고 있다면 값이 증가된 ROW가 남는다.
3. ON DUPLICATE KEY UPDATE
INSERT INTO user(`email`, `name`)
VALUES('abc@naver.com', '전호호')
ON DUPLICATE KEY UPDATE name =VALUES(`name`);
말 그대로 DEPLICATE KEY일 때는 UPDATE를 하라는 쿼리이다.
UPDATE할 필드를 지정할 수 있다.
원래의 ROW에 해당 필드만 UPDATE하기 때문에 Auto Increment 값은 변하지 않는다.