MySQL で momento_distribution テーブルの主キーを変更しようとしたときにエラーが発生しました。エラー メッセージ「1062 - キー 'PRIMARY' のエントリ '0' が重複しています」は、新しい主キー列に重複した値が含まれていることを示します。
検査の結果、新しく作成されたid 列のすべての行の値が「0」になります。この競合により、重複レコードが存在するため、一意の主キーを割り当てることができなくなります。
この問題を解決するには、主キー列に一意の値が含まれていることを確認する必要があります。最も一般的なアプローチは、列を自動インクリメントすることです。これにより、新しい行ごとに一意の値が自動的に生成されます。
テーブル作成の変更:
CREATE TABLE `momento_distribution` ( `momento_id` INT(11) NOT NULL AUTO_INCREMENT, `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$$
既存の変更テーブル:
ALTER TABLE `momento_distribution` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT, DROP PRIMARY KEY, ADD PRIMARY KEY (`id`);
注: これは、id 列がすでに存在していることを前提としています。存在しない場合は、ALTER ステートメントを使用して作成する必要があります。
以上がMySQL エラー 1062 を修正する方法: 主キーのエントリ '0' が重複していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。