0

我不知道为什么错误代码不断弹出。我想要做的是将我的专辑表中的流派列设置为链接到流派表中的流派列的外键。但是每次我尝试在专辑的 SQL 命令中将流派实现为外键时,我都会不断收到错误 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`)

谁能帮我理解出了什么问题?

4

2 回答 2

1

如果你放:

`Genre` int(11) NOT NULL,

KEY `Genre` (`Genre`),

在相册中。然后以下工作:

ALTER TABLE Albums
ADD FOREIGN KEY (`Genre`)
REFERENCES Genre (`Genre_id`);

不工作的原因是:

  1. 类型不匹配
  2. 流派不是专辑中的关键
  3. 您没有引用 Genres 的主键

在此处查看更多说明:

错误代码:1215。无法添加外键约束(外键)

于 2016-03-17T16:32:27.710 回答
0

您只能使用 Genre (Genre.Genre_id) 中的主键字段作为外键。你不能使用 Genre.Genre。

“一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。”

http://www.w3schools.com/sql/sql_foreignkey.asp

于 2016-03-17T16:40:08.677 回答