我收到关于 create table 命令重复键的 1022 错误。查看查询后,我无法理解重复发生的位置。其他人可以看到吗?
SQL query: -- ----------------------------------------------------- -- Table `apptwo`.`usercircle` -- ----------------------------------------------------- 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; MySQL said: Documentation #1022 - Can't write; duplicate key in table 'usercircle'
您很可能已经在名称iduser或idcategory数据库中设置了约束。如果是这样,只需重命名约束。
iduser
idcategory
约束对于整个数据库必须是唯一的,而不仅仅是您正在创建/更改的特定表。
要找出当前使用约束的位置,您可以使用以下查询:
SELECT `TABLE_SCHEMA`, `TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');