Я создаю базу данных больших фильмов, и я получаю сообщение об ошибке:Не удается создать таблицу в Mysql
ERROR 1005 (HY000) в строке 19: Невозможно создать таблицу «Greatest_Movies.genre» (errno: 150)
Я проверил это сообщение: Error Code: 1005. Can't create table '...' (errno: 150) и пробовал много вещей, но без успешных действий.
Это то, что на самом деле есть:
DROP DATABASE `Greatest_Movies`;
CREATE DATABASE `Greatest_Movies`;
USE `Greatest_Movies` ;
CREATE TABLE IF NOT EXISTS `movie` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`film` VARCHAR(255) NOT NULL,
`director` VARCHAR(255) NOT NULL,
`release_year` VARCHAR(255) NOT NULL,
`oscars` TINYINT NULL,
`IMDB_link` VARCHAR(255) NOT NULL,
`film_page` VARCHAR(255) NOT NULL,
`country` VARCHAR(255) NOT NULL,
`genre` TINYINT UNSIGNED NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `genre` (
`id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`id`) REFERENCES `movie`(`genre`))
ENGINE = InnoDB;
Что я не хватает? С уважением
Чтобы сделать это, вам нужно добавить индекс в жанре 'movie'. Но я предполагаю, что вы действительно хотите создать внешний ключ от 'movie' до' genre' («каждый фильм должен принадлежать одному существующему жанру»), поэтому добавьте его в эту таблицу. – Solarflare
Вы правы. Я хочу, чтобы каждый фильм принадлежал к жанру, поэтому я изменил внешний ключ из жанра в фильм, а затем изменил порядок «Создание таблиц», и он работал правильно. Спасибо @Solarflare! – Albeis