MySQL重复密钥错误

MySQL重复密钥错误,mysql,Mysql,如果我运行此代码,所有代码都可以正常工作,但如果取消注释最后一个约束,则会出现以下错误: 错误代码:1022。不会写字;表“传输”中存在重复键 但是没有另一个键“fk_component_id”,这段代码怎么了 -- ----------------------------------------------------- -- Table `pcdb`.`transfer` -- ----------------------------------------------------- CRE

如果我运行此代码,所有代码都可以正常工作,但如果取消注释最后一个约束,则会出现以下错误:

错误代码:1022。不会写字;表“传输”中存在重复键

但是没有另一个键“fk_component_id”,这段代码怎么了

-- -----------------------------------------------------
-- Table `pcdb`.`transfer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `pcdb`.`transfer` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `component_id` INT UNSIGNED NOT NULL,
  `type` INT NULL,
  `parent_id` INT UNSIGNED NULL,
  `source_id` INT UNSIGNED NULL,
  `contractor_id` INT UNSIGNED NULL,
  `src_department_id` INT UNSIGNED NULL,
  `dest_department_id` INT UNSIGNED NULL,
  `session_id` INT UNSIGNED NOT NULL,
  `count` INT UNSIGNED NOT NULL,
  `comment` TEXT(65535) NULL,
  `active` TINYINT(1) NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_src_department_id`
    FOREIGN KEY (`src_department_id`)
    REFERENCES `pcdb`.`department` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_income_id`
    FOREIGN KEY (`source_id`)
    REFERENCES `pcdb`.`transfer` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION, 
  CONSTRAINT `fk_contractor_id`
    FOREIGN KEY (`contractor_id`)
    REFERENCES `pcdb`.`contractor` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_session_id`
    FOREIGN KEY (`session_id`)
    REFERENCES `pcdb`.`session` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_dest_department_id`
    FOREIGN KEY (`dest_department_id`)
    REFERENCES `pcdb`.`department` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_parent_id`
    FOREIGN KEY (`parent_id`)
    REFERENCES `pcdb`.`transfer` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION/*, 
  CONSTRAINT `fk_component_id`
    FOREIGN KEY (`component_id`)
    REFERENCES `pcdb`.`component` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION*/);

听起来您可能已经在数据库中的另一个表上有了具有该名称的约束。尝试将该约束的名称更改为类似“fk\u传输\u组件\u id”的名称然后查看是否仍然出现错误。

组件id中是否有键?--------------------------------------------------------------表
pcdb
组件
-->如果不存在,请创建表
pcdb
组件
id
INT UNSIGNED NOT NULL AUTO_INCREMENT,
name
VARCHAR(255)NULL,主键(
id
));是的,这很有帮助,我只是认为每个表的外键应该是唯一的,但在整个方案中它似乎应该是唯一的