gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:35:34 25 4
gpt4 key购买 nike

提前对可能重复的帖子表示歉意 - 我在其他地方找不到我的确切问题。我正在学习 SQL 类(class)并使用 MySQL Workbench 6.3 作为我的沙箱。在我的类(class)项目中,我正在创建“类(class)”、“教授”和“教学”表。这是前两个,已删节:

// 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 均成功。但我的问题是“教学”需要第二个外键返回“类(class)”。我本以为这样就可以了:

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 创建语句,但没有运气。)问题被描述为“表 '#sql-1060_1b' 中的重复键”,但我无法弄清楚哪个表#sql-1060-1b 可能是。有什么指导吗?

最佳答案

感谢 Norbert van Nobelen,他解决了这个问题 - 将“Course”属性从“cid”重命名为“mycid”就成功了。

关于MySQL Workbench::无法向现有表添加第二个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45335913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com