CREATE TABLE 指令中出現重複鍵錯誤
問題 1。錯誤1022:無法寫入;表中存在重複鍵
由於重複鍵,我在執行 CREATE TABLE 命令時遇到錯誤 1022。我已查看該查詢,但無法確定原因。
查詢:
CREATE TABLE IF NOT EXISTS `apptwo`.`usercircle` ( `idUserCircle` MEDIUMINT NOT NULL , `userId` MEDIUMINT NULL , `circleId` MEDIUMINT NULL , `authUser` BINARY NULL , `authOwner` BINARY NULL , `startDate` DATETIME NULL , `endDate` DATETIME NULL , PRIMARY KEY ( `idUserCircle` ) , INDEX `iduser_idx` ( `userId` ASC ) , INDEX `idcategory_idx` ( `circleId` ASC ) , CONSTRAINT `iduser` FOREIGN KEY ( `userId` ) REFERENCES `apptwo`.`user` ( `idUser` ) ON DELETE NO ACTION ON UPDATE NO ACTION , CONSTRAINT `idcategory` FOREIGN KEY ( `circleId` ) REFERENCES `apptwo`.`circle` ( `idCircle` ) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE = INNODB;
Q2。重複發生在哪裡?
A1.約束名稱衝突
此錯誤可能源自重複的約束名稱。約束在整個資料庫中必須是唯一的,而不僅僅是在特定表內。
在這種情況下,資料庫中似乎已經存在名為 iduser 和/或 idcategory 的限制。重新命名這些約束將解決問題。
Q3。如何識別現有約束?
A2。尋找約束的查詢
要確定目前使用約束的位置,請執行以下查詢:
SELECT `TABLE_SCHEMA`, `TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');
此查詢將傳回應用程式約束的架構和表名稱.
以上是為什麼在建立 MySQL 表時出現重複鍵錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!