繁体   English   中英

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

[英]MySQL Workbench :: Can't add a second foreign key to existing table

事先为可能重复的帖子表示歉意-我在其他地方找不到确切的问题。 我正在上一门SQL课程,并使用MySQL Workbench 6.3作为我的沙箱。 在班级项目中,我正在创建“课程”,“教授”和“教学”表。 这是节略的前两个:

// 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;

“教学”表非常简单:

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均成功。 但是我的问题是,“教师”需要第二个外键才能回到“课程”。 我本以为这样可以做到:

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 create语句,但是没有运气。)该问题被描述为“ duplicate key in table '#sql-1060_1b' ”,但是我无法弄清楚哪个表#sql-1060-1b可能是。 有指导吗?

感谢Norbert van Nobelen解决了这个问题-将“ Course”属性从“ cid”重命名为“ mycid”可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM