Не знаю, почему код ошибки продолжает появляться. То, что я пытаюсь сделать, - установить столбец «Жанр» в моей таблице альбома на внешний ключ, который ссылается на столбец «Жанр» в таблице жанров. Но каждый раз, когда я пытаюсь реализовать Genre в качестве внешнего ключа в команде SQL в альбомах, я продолжаю получать ошибку 150 без указания того, что может быть ошибкой. Поскольку информация о поле идентична в обеих таблицах.Ошибка MySQL 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, чтобы попытаться сделать Жанр в альбомах a Внешний ключ
ALTER TABLE Albums
ADD FOREIGN KEY (`Genre`)
REFERENCES Genre (`Genre`)
Может кто-нибудь помочь мне понять, что происходит не так?
ЬшоВВ разрешает внешний ключ, чтобы ссылаться на любой столбец индекса или группы столбцов. Однако в ссылочной таблице должен быть индекс, в котором ссылочные столбцы указаны в качестве первых столбцов в том же порядке. (Http://dev.mysql.com/doc/refman/5.1/en/create-table-foreign-keys.html). ** Пожалуйста, ПРОЧИТАЙТЕ ДОКУМЕНТАЦИЮ **. Кроме того, я рекомендую использовать столбец int (11) в таблице «альбомы» и использовать существующий цифровой ключ в качестве ссылки (вместо символьного представления жанра) – Pred
Так что, поскольку жанр в жанровой таблице не является первым столбец, поэтому он приходит с ошибкой? –
Прочтите еще раз :) – Pred