ホームページ >データベース >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 列がある場合、 試すthis:

<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。