ホームページ >データベース >mysql チュートリアル >テーブルを変更すると、「MySQL エラー 1062: キー 'PRIMARY' のエントリ '0' が重複しています」が発生するのはなぜですか?
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 中国語 Web サイトの他の関連記事を参照してください。