不能寫入;建立表時出現重複鍵
由於主鍵條目重複而嘗試建立新表時遇到錯誤 1022。即使在檢查了查詢之後,您也可能很難識別重複的來源。讓我們進一步研究一下。
您提供的查詢包含一個名為「iduser」的約束作為「userId」列的外鍵。此外,它還為「circleId」欄位指定名為「idcategory」的約束。這些約束名稱似乎是問題的根源。
約束和重複
MySQL 中的約束在整個資料庫中必須是唯一的,而不僅僅是針對特定表正在建立或修改。因此,您的資料庫中可能已經有其他使用「iduser」或「idcategory」約束名稱的表或索引。此衝突會導致重複鍵錯誤。
辨識重複約束
要確定目前使用這些限制的位置,請執行以下查詢:
SELECT `TABLE_SCHEMA`, `TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');
此查詢將顯示「iduser」和「idcategory」約束所在的表和模式
解決方案
要解決該錯誤,您需要重新命名重複的約束。考慮使用特定於目前資料表的唯一名稱,例如「userId」列上的外鍵約束的「fk_user」。重新命名約束並更新查詢後,您應該能夠成功建立表,而無需重複密鑰錯誤。
以上是為什麼建立表格時出現 MySQL 錯誤 1022(重複鍵)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!