MySQL Workbench ::无法向现有表添加第二个外键

时间:2017-07-26 19:31:58

标签: mysql

提前道歉,重复的帖子是什么 - 我无法在其他地方找到我的确切问题。我正在学习SQL课程并使用MySQL Workbench 6.3作为我的沙箱。在我的班级项目中,我正在创建"课程","教授"和#34;教导"表。这是前两个,删节:

// CREATE DATABASE `project1'...
CREATE TABLE `courses`    ( `cid` int(11) NOT NULL, ...more... PRIMARY KEY (`cid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `professors` ( `ssn` int(11) NOT NULL, ...more... PRIMARY KEY (`ssn`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

" Teaches"表格很简单:

CREATE TABLE `teaches` (
  `cid` int(11) NOT NULL,
  `ssn` int(11) NOT NULL,
  PRIMARY KEY (`cid`,`ssn`),
  KEY `ssn_idx` (`ssn`),
  CONSTRAINT `ssn` FOREIGN KEY (`ssn`) REFERENCES `professors` (`ssn`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

以上所有SQL都是成功的。但我的问题是" Teaches"需要第二个外键回到课程。"我原以为会这样做:

ALTER TABLE `project1`.`teaches` 
ADD CONSTRAINT `cid`
  FOREIGN KEY (`cid`)
  REFERENCES `project1`.`courses` (`cid`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

但MySQL讨厌它:

Operation failed: There was an error while applying the SQL script to the database.
ERROR 1022: Can't write; duplicate key in table '#sql-1060_1b'
SQL Statement:
ALTER TABLE `project1`.`teaches` 
ADD CONSTRAINT `cid`
  FOREIGN KEY (`cid`)
  REFERENCES `project1`.`courses` (`cid`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION

我感到困惑,因为我有其他表与两个外键关系,我没有与他们达成这个问题。 (是的,我已经克隆了他们的SQL创建语句,但没有运气。)问题被描述为" duplicate key in table '#sql-1060_1b'"但我无法弄清楚#sql-1060-1b可能是什么表。有什么指导吗?

1 个答案:

答案 0 :(得分:0)

感谢Norbert van Nobelen解决了这个问题 - 将“课程”属性从“cid”重命名为“mycid”就行了。