我不知道为什么错误代码会一直弹出。我要做的是将我的Album表中的Genre列设置为链接到类型表中的Genre列的外键。但是每当我尝试在专辑的SQL命令中将Genre实现为外键时,我一直收到错误150而没有指出错误是什么。由于两个表中的字段信息相同。
我的相册表背后的代码
CREATE TABLE `Albums` (
`Album_id` int(6) NOT NULL auto_increment,
`Album_Name` varchar(32) NOT NULL,
`Number_Of_Tracks` int(11) NOT NULL,
`Genre` varchar(32) NOT NULL,
`Track_id` int(6) NOT NULL,
`Artist_id` int(6) NOT NULL,
PRIMARY KEY (`Album_id`),
KEY `Track_id` (`Track_id`),
KEY `Artist_id` (`Artist_id`), CONSTRAINT `Albums_ibfk_1`
FOREIGN KEY (`Track_id`) REFERENCES `Tracks` (`Track_id`), CONSTRAINT `Albums_ibfk_2`
FOREIGN KEY (`Artist_id`) REFERENCES `Artist` (`Artist_id`))
ENGINE=InnoDB
DEFAULT CHARSET=latin1
我的类型表背后的代码
CREATE TABLE `Genre` (
`Genre_id` int(11) NOT NULL auto_increment,
`Genre` varchar(32) NOT NULL,
PRIMARY KEY (`Genre_id`))
ENGINE=InnoDB DEFAULT CHARSET=latin1
我在SQL上使用的代码尝试将相册中的流派设为外键
ALTER TABLE Albums
ADD FOREIGN KEY (`Genre`)
REFERENCES Genre (`Genre`)
任何人都可以帮我理解出了什么问题吗?
答案 0 :(得分:1)
如果你把:
`Genre` int(11) NOT NULL,
和
KEY `Genre` (`Genre`),
相册中的。 然后以下工作:
ALTER TABLE Albums
ADD FOREIGN KEY (`Genre`)
REFERENCES Genre (`Genre_id`);
不工作的原因是:
请在此处查看扩展说明:
Error Code: 1215. Cannot add foreign key constraint (foreign keys)
答案 1 :(得分:0)
您只能使用Genre(Genre.Genre_id)中的主键字段作为外键。你不能使用Genre.Genre。
"一个表中的FOREIGN KEY指向另一个表中的PRIMARY KEY。"