我得到一个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' 

当前回答

从“成功解决”和“命名约定”两个环节, 我很容易就解决了这个问题。例如,对于外键名称,给出fk_colName_TableName。这个命名约定是明确的,并且使你的DB模型中的每个ForeignKey都是唯一的,你永远不会得到这个错误。

错误1022:不能写;表中重复的键

其他回答

从“成功解决”和“命名约定”两个环节, 我很容易就解决了这个问题。例如,对于外键名称,给出fk_colName_TableName。这个命名约定是明确的,并且使你的DB模型中的每个ForeignKey都是唯一的,你永远不会得到这个错误。

错误1022:不能写;表中重复的键

修改MySQL中的外键名称。数据库表中不能有相同的外键名。

检查所有表和所有外键,避免使用名称完全相同的两个外键。

我在创建新表时遇到了这个问题。结果发现我给出的外键名称已经被使用了。重命名键修复了它。

我也遇到过这个问题。检查Mysql中是否已经存在数据库名称,并重命名旧的数据库名称。

您可能正在尝试在某个表中创建一个外键,该表在先前存在的表中具有相同的名称。 使用以下格式命名外键

tablename_columnname_fk