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中文网其他相关文章!