UNIQUE KEY와 ALTER IGNORE TABLE을 사용하여 MySQL 테이블에서 중복을 제거하려고합니다. MySQL 설명서에서 다음과 같이 말합니다 :MySQL : ALTER IGNORE TABLE은 "무결성 제약 조건 위반"을 나타냅니다.
IGNORE는 표준 SQL에 대한 MySQL 확장입니다. 새로운 테이블의 고유 키에 중복이 있거나 ALTER TABLE이 작동하는 방식을 제어합니다. IGNORE가 지정되지 않으면 중복 키 오류가 발생하면 사본이 중단되고 롤백됩니다. IGNORE가 지정되면 유일한 키에 중복 된 행이있는 첫 번째 행만 사용됩니다. 충돌하는 다른 행이 삭제됩니다. 잘못된 값은 가장 일치하는 수용 가능한 값으로 잘립니다. 키 'dupidx'에 대한 항목 'blabla'을 중복 -
내가 쿼리를 실행 ...
ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field)
... 난 여전히 오류 # 1062 얻을.
설정 세션 old_alter_table = 1 '첫 번째 실행에 대한 권장 해결 방법은,'이 근무는! 나를. – Peter
감사합니다 피터 - 이것은 나를 위해 지금 일하는 것 같습니다. 이 문제에 대해 전혀 알지 못했습니다. 내 dev 머신은 mariadb이지만, 프로덕션 (mysql 5.5)에서 실행해야 할 때이 문제가 발생했습니다. 이 stackoverflow 내 하루 저장! – spidie
이것은 아마도 스택 오버플로에서 본 최악의 대답입니다. 스토리지 엔진을 변경하는 것 자체가 중형 테이블에서도 중요한 사업입니다. 이 세 가지 쿼리는 잠시 동안 데이터베이스 서버를 잠글 수 있습니다. 이것은 해결책과 같은 것이 아닙니다. – Mikkel