首頁 > 資料庫 > mysql教程 > 為什麼我會收到 MySQL 錯誤 1062:新主鍵的條目重複?

為什麼我會收到 MySQL 錯誤 1062:新主鍵的條目重複?

Linda Hamilton
發布: 2024-12-27 13:53:09
原創
187 人瀏覽過

Why Am I Getting MySQL Error 1062: Duplicate Entry for a New Primary Key?

MySQL 錯誤1062:新主鍵的重複條目

當更改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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板