【问题标题】:mysql Can't write - duplicate key [duplicate]mysql无法写入-重复键[重复]
【发布时间】:2014-07-12 02:04:24
【问题描述】:

我不明白。有人可以在这里解释我的失败吗:

CREATE TABLE IF NOT EXISTS `mytable`.`Employee_Service` (
  `Employee_Service_Id` INT NOT NULL,
  `Created_At` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
  `Updated_At` TIMESTAMP NULL,
  PRIMARY KEY (`Employee_Service_Id`),
  CONSTRAINT `Employee`
    FOREIGN KEY (`Employee_Service_Id`)
    REFERENCES `mytable`.`Employees` (`Employee_Id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `Service`
    FOREIGN KEY (`Employee_Service_Id`)
    REFERENCES `mytable`.`Services` (`Service_Id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

日志文件说:

Error 1022: Can't write; duplicate key in table 'employee_service'

要了解我想要做什么: 表“Employee_Service”是表“Employees”和“Services”之间的连接。在该表中,我想存储“Employees”表中的“Employee_Id”并将其与“Services”表中的“Service_Id”连接起来。所以我可以得到一个员工有服务的关系。 但是我的桌子有什么问题,尤其是外键???

【问题讨论】:

  • 检查您的其他表,看看您是否使用了相同的约束名称EmployeeService

标签: mysql


【解决方案1】:

很可能您的另一个表具有名为EmployeeService 的相同约束。您发布的CREATE 声明的另一个问题是,您正试图将Employee_Service_Id 设为PKFK

PRIMARY KEY (`Employee_Service_Id`),
  CONSTRAINT `Employee`
    FOREIGN KEY (`Employee_Service_Id`)

【讨论】:

  • 好的,我会检查一下。但是语句的名称是由 MySQL Workbench 完成的。或者我可以自己改变吗?
  • @Tipo,是的,你可以。尝试一下,如果成功则接受答案。
  • 太棒了!只有另一个表使用相同的外键名称。这真的很有趣。自 11 年以来,我一直在创建许多数据库,但从未遇到过这样的问题。好笑!
猜你喜欢
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 2013-08-06
  • 1970-01-01
  • 2018-07-04
  • 2016-04-23
相关资源
最近更新 更多