无法使用组合主键写入重复键

时间:2018-11-03 16:15:08

标签: mysql

我有两个表,我只想保持它们之间的关系,即用户和组合,如下所示

CREATE TABLE `shocase`.`combineScorers` (
  `combineId` INT NOT NULL,
  `userId` INT NOT NULL,
  `createdAt` DATETIME NOT NULL,
  `updatedAt` DATETIME NOT NULL,
  PRIMARY KEY (`combineId`, `userId`),
  INDEX `combineId_idx` (`combineId` ASC),
  INDEX `userId_idx` (`userId` ASC),
  CONSTRAINT `fk_combines_combineId`
    FOREIGN KEY (`combineId`)
    REFERENCES `shocase`.`combines` (`combineId`)
    ON DELETE NO ACTION
    ON UPDATE CASCADE,
  CONSTRAINT `fk_users_userId`
    FOREIGN KEY (`userId`)
    REFERENCES `shocase`.`users` (`userId`)
    ON DELETE NO ACTION
    ON UPDATE CASCADE);

bundleId和userId没什么特别的。两者都是各自表的外键,我正在尝试将组合主键创建为(combineId, userId)

运行时出现以下错误

  

错误代码:1022。表'combineScorers'中的重复键

1 个答案:

答案 0 :(得分:1)

您可能在数据库中使用名称为combineIduserId的约束。它们对于整个数据库应该是唯一的。如果是这样,请重命名它们。

搜索当前在哪里使用约束:

SELECT `TABLE_SCHEMA`, `TABLE_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `CONSTRAINT_NAME` IN ('combineId', 'userId');