ホームページ >データベース >mysql チュートリアル >MySQL エラー 1062: キー 'PRIMARY' のエントリ '0' が重複していますが、データを損失することなく解決する方法
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 サイトの他の関連記事を参照してください。