gpt4 book ai didi

mysql - 不能链接两个表?

转载 作者:可可西里 更新时间:2023-11-01 08:29:57 25 4
gpt4 key购买 nike

我敢肯定这是一件非常简单的事情,但我无法理解它。

每次尝试运行此脚本时,都会收到错误号 150。我知道这是外键问题。我的其他表都很好,可以毫无问题地链接到 projectregister 表,但由于某种原因,没有任何东西想链接到 userchar 表。

我在大学服务器上运行它,所以我不能尝试显示引擎 innoDB 状态。任何想法这里出了什么问题?谢谢

CREATE TABLE `userchar` (
`userid` int(5) NOT NULL,
`charname` varchar(25) NOT NULL,
`charstats` varchar(255) DEFAULT NULL,
PRIMARY KEY (`userid`,`charname`),
CONSTRAINT `userchar_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `projectregister` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `notes` (
`userid` int(5) NOT NULL DEFAULT '0',
`charname` varchar(25) NOT NULL,
`usernote` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`userid`,`charname`,`usernote`),
CONSTRAINT `notes_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `projectregister` (`userid`),
foreign key (charname) references userchar(charname)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

最佳答案

外键必须引用唯一值 - 无论是主键还是普通的旧唯一索引。

在这里,您试图使 notes.userid 引用 projectregister.userid。但是,projectregister.userid 不是唯一值 - 只有 projectregister.useridprojectregister.charname 的组合才是唯一的。

您应该更改主键或外键定义,以便它们的列列表匹配。

关于mysql - 不能链接两个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29793636/

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