MySQL 错误 150 无法将流派作为外键从流派 table 分配到专辑 table

MySQL Error 150 Can't assign Genre as a foreign key from the Genre table into Album table

不知道为什么一直弹出错误代码。我想要做的是将我的专辑 table 中的流派列设置为链接到流派 Table 中的流派列的外键。但是每次我尝试在 Albums 的 SQL 命令中将 Genre 实现为外键时,我总是收到错误 150,但没有指示错误可能是什么。由于字段信息在两个 table 中是相同的。

我相册背后的代码 table

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

我的流派背后的代码table

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`)

任何人都可以帮助我了解出了什么问题吗?

如果你输入:

`Genre` int(11) NOT NULL,

KEY `Genre` (`Genre`),

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

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

不工作的原因是:

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

在此处查看详细说明:

Error Code: 1215. Cannot add foreign key constraint (foreign keys)

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

"A FOREIGN KEY in one table points to a PRIMARY KEY in another table."

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