문제:
언제 기존 데이터와 관계가 있는 MySQL 테이블의 기본 키를 수정하려고 하면 오류가 발생합니다. 발생:
1062 - Duplicate entry '0' for key 'PRIMARY'
기본 키로 의도된 새로 추가된 열에 중복 값(0)이 포함되어 고유 제약 조건을 위반하기 때문에 문제가 발생합니다.
근본 원인:
이 오류는 일반적으로 기본 키로 수정되는 열을 참조하는 외래 키 관계가 있는 기존 데이터가 있을 때 발생합니다. 기본 키의 값이 고유하지 않으면 데이터베이스는 변경 사항을 거부합니다.
해결 방법(데이터 손실 없음):
데이터 손실 없이 이 문제를 해결하려면 , 다음 단계를 수행할 수 있습니다.
기본 키를 다음으로 설정 자동 증가:
테이블 정의에서 새 기본 키 열을 자동 증가로 지정합니다.
`momento_id` INT(11) NOT NULL AUTO_INCREMENT,
이렇게 하면 새 기본 키에 대한 고유 값이 자동으로 생성됩니다.
기존 예비선거 삭제 키:
기존 기본 키 제약 조건 제거:
ALTER TABLE `momento_distribution` DROP PRIMARY KEY;
새 기본 키 추가:
자동 증가에 새로운 기본 키 제약 조건을 추가합니다. 열:
ALTER TABLE `momento_distribution` ADD PRIMARY KEY (`momento_id`);
이렇게 하면 기존 데이터에 영향을 주지 않고 자동 생성된 값이 고유한 기본 키로 할당됩니다.
대체 접근 방식:
"momento_id" 열이 0부터 시작할 필요가 없다면 대안을 고려해 볼 수 있습니다. 접근 방식:
새 자동 증가 열 만들기:
자동 증가가 활성화된 새 열 추가:
ALTER TABLE `momento_distribution` ADD `new_id` INT(11) NOT NULL AUTO_INCREMENT;
기존 업데이트 데이터:
기존 행을 업데이트하여 새 열을 채웁니다.
UPDATE `momento_distribution` SET `new_id` = `momento_id`;
이전 기본 키를 삭제하고 새 기본 키 추가:
이전 기본 키를 삭제하고 자동 증가 시 새 기본 키를 추가합니다. 열:
ALTER TABLE `momento_distribution` DROP PRIMARY KEY, ADD PRIMARY KEY (`new_id`);
이 접근 방식은 모든 행에 고유한 자동 증가 값을 할당하여 기본 키 제약 조건이 충족되도록 합니다.
위 내용은 MySQL 오류 1062: 데이터 손실 없이 중복된 기본 키 항목을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!