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`);
不工作的原因是:
- 类型不匹配
- 流派不是相册中的关键字
- 您没有引用 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."
不知道为什么一直弹出错误代码。我想要做的是将我的专辑 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`);
不工作的原因是:
- 类型不匹配
- 流派不是相册中的关键字
- 您没有引用 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."