問題:
何時嘗試使用現有資料和關係修改MySQL 表上的主鍵,出現錯誤遇到:
1062 - Duplicate entry '0' for key 'PRIMARY'
出現此問題的原因是新新增的作為主鍵的列包含重複值(0),違反了唯一限制。
根本原因:
當您的現有資料具有外鍵關係引用正在修改的資料列作為主鍵時,通常會發生此錯誤。如果主鍵中的值不唯一,資料庫將拒絕變更。
解決方案(不丟失數據):
解決此問題而不丟失數據,您可以按照以下步驟操作:
將主鍵設為自動增量:
在表定義中,指定新的主鍵列為自動增量:
`momento_id` INT(11) NOT NULL AUTO_INCREMENT,
這將自動為新主鍵產生唯一值。
放棄舊小學的鍵:
刪除現有主鍵約束:
ALTER TABLE `momento_distribution` DROP PRIMARY KEY;
ALTER TABLE `momento_distribution` ADD PRIMARY KEY (`momento_id`);
ALTER TABLE `momento_distribution` ADD `new_id` INT(11) NOT NULL AUTO_INCREMENT;
>
UPDATE `momento_distribution` SET `new_id` = `momento_id`;
在自增上新增的主鍵約束列:
這會將自動產生的值指派為唯一主鍵,而不影響現有數據。ALTER TABLE `momento_distribution` DROP PRIMARY KEY, ADD PRIMARY KEY (`new_id`);
如果「momento_id」欄位不需要從0開始,你可以考慮替代方案方法:建立新的自動增量欄位: 新增啟用自動增量的新欄位: 更新現有資料:更新現有行以填入新欄位: 刪除舊主鍵並新增主鍵:刪除舊主鍵並在自增上新增主鍵column:此方法為所有行分配唯一的自動增量值,確保滿足主鍵約束。
以上是MySQL 錯誤 1062:如何修復重複的主鍵條目而不遺失資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!