首頁 > 資料庫 > mysql教程 > MySQL 錯誤 1062:如何修復重複的主鍵條目而不遺失資料?

MySQL 錯誤 1062:如何修復重複的主鍵條目而不遺失資料?

Susan Sarandon
發布: 2025-01-03 21:51:40
原創
691 人瀏覽過

MySQL Error 1062: How to Fix Duplicate Primary Key Entries Without Data Loss?

MySQL 1062 錯誤:主鍵重複條目,如何解決而不遺失資料?

問題:

何時嘗試使用現有資料和關係修改MySQL 表上的主鍵,出現錯誤遇到:

1062 - Duplicate entry '0' for key 'PRIMARY'
登入後複製

出現此問題的原因是新新增的作為主鍵的列包含重複值(0),違反了唯一限制。

根本原因:

當您的現有資料具有外鍵關係引用正在修改的資料列作為主鍵時,通常會發生此錯誤。如果主鍵中的值不唯一,資料庫將拒絕變更。

解決方案(不丟失數據):

解決此問題而不丟失數據,您可以按照以下步驟操作:

  1. 將主鍵設為自動增量:

    在表定義中,指定新的主鍵列為自動增量:

    `momento_id` INT(11) NOT NULL AUTO_INCREMENT,
    登入後複製

    這將自動為新主鍵產生唯一值。

  2. 放棄舊小學的鍵:

    刪除現有主鍵約束:

    ALTER TABLE `momento_distribution` DROP PRIMARY KEY;
    登入後複製
  3. ALTER TABLE `momento_distribution` ADD PRIMARY KEY (`momento_id`);
    登入後複製

  1. ALTER TABLE `momento_distribution` ADD `new_id` INT(11) NOT NULL AUTO_INCREMENT;
    登入後複製
  2. >
    UPDATE `momento_distribution` SET `new_id` = `momento_id`;
    登入後複製
    新增主鍵:
  3. 在自增上新增的主鍵約束列:

    這會將自動產生的值指派為唯一主鍵,而不影響現有數據。
    ALTER TABLE `momento_distribution`
    DROP PRIMARY KEY,
    ADD PRIMARY KEY (`new_id`);
    登入後複製
替代方法:

如果「momento_id」欄位不需要從0開始,你可以考慮替代方案方法:建立新的自動增量欄位: 新增啟用自動增量的新欄位: 更新現有資料:更新現有行以填入新欄位: 刪除舊主鍵並新增主鍵:刪除舊主鍵並在自增上新增主鍵column:此方法為所有行分配唯一的自動增量值,確保滿足主鍵約束。

以上是MySQL 錯誤 1062:如何修復重複的主鍵條目而不遺失資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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