> 데이터 베이스 > MySQL 튜토리얼 > MySQL 오류 1062: 데이터 손실 없이 중복된 기본 키 항목을 수정하는 방법은 무엇입니까?

MySQL 오류 1062: 데이터 손실 없이 중복된 기본 키 항목을 수정하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-03 21:51:40
원래의
688명이 탐색했습니다.

MySQL Error 1062: How to Fix Duplicate Primary Key Entries Without Data Loss?

MySQL 1062 오류: 기본 키에 대한 중복 항목, 데이터 손실 없이 해결하는 방법은 무엇입니까?

문제:

언제 기존 데이터와 관계가 있는 MySQL 테이블의 기본 키를 수정하려고 하면 오류가 발생합니다. 발생:

1062 - Duplicate entry '0' for key 'PRIMARY'
로그인 후 복사

기본 키로 의도된 새로 추가된 열에 중복 값(0)이 포함되어 고유 제약 조건을 위반하기 때문에 문제가 발생합니다.

근본 원인:

이 오류는 일반적으로 기본 키로 수정되는 열을 참조하는 외래 키 관계가 있는 기존 데이터가 있을 때 발생합니다. 기본 키의 값이 고유하지 않으면 데이터베이스는 변경 사항을 거부합니다.

해결 방법(데이터 손실 없음):

데이터 손실 없이 이 문제를 해결하려면 , 다음 단계를 수행할 수 있습니다.

  1. 기본 키를 다음으로 설정 자동 증가:

    테이블 정의에서 새 기본 키 열을 자동 증가로 지정합니다.

    `momento_id` INT(11) NOT NULL AUTO_INCREMENT,
    로그인 후 복사

    이렇게 하면 새 기본 키에 대한 고유 값이 자동으로 생성됩니다.

  2. 기존 예비선거 삭제 키:

    기존 기본 키 제약 조건 제거:

    ALTER TABLE `momento_distribution` DROP PRIMARY KEY;
    로그인 후 복사
  3. 새 기본 키 추가:

    자동 증가에 새로운 기본 키 제약 조건을 추가합니다. 열:

    ALTER TABLE `momento_distribution` ADD PRIMARY KEY (`momento_id`);
    로그인 후 복사

이렇게 하면 기존 데이터에 영향을 주지 않고 자동 생성된 값이 고유한 기본 키로 할당됩니다.

대체 접근 방식:

"momento_id" 열이 0부터 시작할 필요가 없다면 대안을 고려해 볼 수 있습니다. 접근 방식:

  1. 새 자동 증가 열 만들기:

    자동 증가가 활성화된 새 열 추가:

    ALTER TABLE `momento_distribution` ADD `new_id` INT(11) NOT NULL AUTO_INCREMENT;
    로그인 후 복사
  2. 기존 업데이트 데이터:

    기존 행을 업데이트하여 새 열을 채웁니다.

    UPDATE `momento_distribution` SET `new_id` = `momento_id`;
    로그인 후 복사
  3. 이전 기본 키를 삭제하고 새 기본 키 추가:

    이전 기본 키를 삭제하고 자동 증가 시 새 기본 키를 추가합니다. 열:

    ALTER TABLE `momento_distribution`
    DROP PRIMARY KEY,
    ADD PRIMARY KEY (`new_id`);
    로그인 후 복사

이 접근 방식은 모든 행에 고유한 자동 증가 값을 할당하여 기본 키 제약 조건이 충족되도록 합니다.

위 내용은 MySQL 오류 1062: 데이터 손실 없이 중복된 기본 키 항목을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿