>데이터 베이스 >MySQL 튜토리얼 >MySQL 오류 1062: 데이터 손실 없이 'PRIMARY' 키에 대한 중복 항목 '0'을 해결하는 방법은 무엇입니까?

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

Linda Hamilton
Linda Hamilton원래의
2025-01-04 13:59:41647검색

How to Solve MySQL Error 1062: Duplicate Entry '0' for Key 'PRIMARY' Without Data Loss?

MySQL 오류 1062: 데이터 손실 없이 솔루션 만들기

MySQL 영역에서 오류 1062가 발생합니다: "중복된 항목 '0 키 'PRIMARY'에 대해 '입니다. 이는 외래 키 관계와 데이터 무결성을 유지하면서 테이블의 기본 키를 변경하려고 할 때 발생합니다. 이 문제를 자세히 알아보기 위해 제시된 사례를 살펴보겠습니다.

제공된 쿼리는 기존 관계를 유지하면서 새 id 열을 기본 키로 추가하여 momento_distribution 테이블을 변경하는 것을 목표로 합니다. 그러나 새 기본 키의 중복 항목으로 인해 쿼리가 실패합니다.

분석 결과 새로 생성된 id 열의 행 전체에 '0' 값이 포함되어 있는 것으로 나타났습니다. 기본 키에는 고유한 값이 포함되어야 하므로 이러한 중복은 장애가 됩니다. 이를 극복하려면 id 열을 자동 증가로 구성하여 고유한 값이 자동으로 생성되도록 해야 합니다.

원활한 실행을 위해 수정된 쿼리:

< pre>
CREATE TABLE momento_distribution
(

 `id`                 INT(11) NOT NULL AUTO_INCREMENT,
 `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,
 PRIMARY KEY (`momento_id`, `momento_idmember`),
 KEY `momento_distribution_FI_2` (`momento_idmember`),
 KEY `accepted` (`accepted`, `ext_member`)

)
ENGINE=InnoDB
DEFAULT CHARSET=latin1;

또는 이미 값이 포함된 id 열이 있는 경우 , 노력하다 이:

<br>ALTER TABLE momento_distribution<br> CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT,<br> DROP PRIMARY KEY,<br> ADD PRIMARY KEY (id);<br>

이러한 수정을 통해 MySQL은 자동으로 새 기본 키에 고유한 값을 할당하여 중복 문제를 해결합니다. 테이블 구조는 그에 따라 조정되어 데이터를 보호하고 데이터베이스의 무결성을 보장합니다.

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

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