>데이터 베이스 >MySQL 튜토리얼 >테이블을 변경할 때 MySQL 오류 1062: 'PRIMARY' 키에 대한 중복 항목 '0'이 발생하는 이유는 무엇입니까?

테이블을 변경할 때 MySQL 오류 1062: 'PRIMARY' 키에 대한 중복 항목 '0'이 발생하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-01 00:42:10843검색

Why am I getting MySQL Error 1062: Duplicate entry '0' for key 'PRIMARY' when altering my table?

MySQL 오류 1062: 기본 키 중복 '0'

momento_distribution 테이블을 변경하는 동안 문제가 발생하여 오류 " 1062 - 'PRIMARY' 키에 대해 '0' 항목이 중복되었습니다." 이는 테이블의 데이터에 문제가 있음을 나타낼 수 있습니다.

원본 테이블 구조에 정의된 기본 키는 momento_id 및 momento_idmember 열의 조합이었습니다. 그러나 새 ID 열을 추가하고 이를 기본 키로 설정한 후 이 열에서 특히 '0' 값이 중복되는 것을 발견했습니다.

이 문제를 해결하려면 ID 열을 지정해 볼 수 있습니다. 아래와 같이 테이블 정의에서 자동 증가로 사용됩니다.

CREATE TABLE `momento_distribution`
  (
     `momento_id`       INT(11) NOT NULL,
     `momento_idmember` INT(11) NOT NULL,
     `created_at`       DATETIME DEFAULT NULL,
     `updated_at`       DATETIME DEFAULT NULL,
     `unread`           TINYINT(1) DEFAULT '1',
     `accepted`         VARCHAR(10) NOT NULL DEFAULT 'pending',
     `ext_member`       VARCHAR(255) DEFAULT NULL,
     `id`               INT(11) NOT NULL AUTO_INCREMENT,
     PRIMARY KEY (`id`),  -- New primary key
     KEY `momento_distribution_FI_2` (`momento_idmember`),
     KEY `accepted` (`accepted`, `ext_member`)
  )
ENGINE=InnoDB
DEFAULT CHARSET=latin1;

또는 이미 id 열을 생성한 경우 다음과 같이 수정할 수 있습니다. 다음 쿼리를 사용하여 자동 증가:

ALTER TABLE `momento_distribution`
  CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT,
  DROP PRIMARY KEY,
  ADD PRIMARY KEY (`id`);  -- New primary key

id 열을 자동 증가로 지정하면 각 행이 이 열에 대해 고유한 값을 갖도록 하여 중복된 '0' 문제를 제거할 수 있습니다. 이렇게 하면 테이블 구조를 변경하고 데이터 손실 없이 id 열을 기본 키로 할당할 수 있습니다.

위 내용은 테이블을 변경할 때 MySQL 오류 1062: 'PRIMARY' 키에 대한 중복 항목 '0'이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.