[英]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.