當更改MySQL 表以更改其主鍵時,可能會遇到錯誤代碼1062:「重複條目'0 ' for key 'PRIMARY'”當新指定的主鍵列包含重複項時,會發生這種情況
原因:
出現此問題的原因是現有表資料在轉換為主鍵的列中可能存在重複值。 PRIMARY KEY 約束確保列中的所有值都是唯一的。當新增 PRIMARY KEY 約束時,MySQL 會檢查重複項,如果存在則失敗。
解決方案:
要避免資料遺失並解決錯誤,請按照以下步驟操作:
1。為新主鍵列新增自動增量:
確保新主鍵列具有AUTO_INCRMENT 屬性:
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 (`id`, `momento_idmember`), KEY `momento_distribution_FI_2` (`momento_idmember`), KEY `accepted` (`accepted`, `ext_member`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
透過指派AUTO_INCRMENT 屬性,MySQL 將自動產生新主鍵列的唯一值,避免潛在的重複。
2.更改現有列:
如果您已經建立了沒有AUTO_INCRMENT 屬性的新主鍵列,則可以使用下列查詢對其進行修改:
ALTER TABLE `momento_distribution` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT, DROP PRIMARY KEY, ADD PRIMARY KEY (`id`);
此查詢將更改現有的id 欄位以具有AUTO_INCRMENT屬性,刪除舊的主鍵約束,並在修改後的 id 上新增的主鍵約束欄位。
以上是為什麼我會收到 MySQL 錯誤 1062:新主鍵的條目重複?的詳細內容。更多資訊請關注PHP中文網其他相關文章!