MySQL의 ALTER 문을 사용하면 고유 키 추가를 포함하여 테이블 정의를 수정할 수 있습니다. IGNORE 키워드 확장을 사용하면 이 작업 중에 중복 행을 제거할 수 있습니다. 그러나 IGNORE를 사용하는 경우에도 "무결성 제약 조건 위반" 오류가 발생한다고 사용자가 보고했습니다.
문제:
고유 키를 기반으로 중복 항목을 제거하기 위해 ALTER IGNORE TABLE 문을 실행할 때, IGNORE가 이를 방지한다는 문서의 주장과 모순되는 "무결성 제약 조건 위반" 오류가 계속 발생합니다. 오류.
원인:
IGNORE 키워드 확장은 특정 MySQL 버전의 InnoDB 엔진에 버그가 있어 오류가 발생하는 것 같습니다.
해결책:
이 문제를 피하려면 테이블을 일시적으로 MyISAM으로 변환하고 고유 인덱스를 추가하세요. IGNORE를 사용하여 다시 InnoDB로 변환합니다.
ALTER TABLE table ENGINE MyISAM; ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field); ALTER TABLE table ENGINE InnoDB;
참고: 외래 키 제약 조건이 있는 경우 먼저 이를 제거하고 변환 후 다시 추가해야 합니다.
위 내용은 IGNORE를 사용하는 경우에도 무결성 제약 조건 위반으로 인해 ALTER IGNORE TABLE이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!