【发布时间】:2017-02-20 19:01:01
【问题描述】:
我正在创建一个包含最精彩电影的数据库,但出现错误:
ERROR 1005 (HY000) at line 19: Can't create table '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中的genre上添加一个索引才能做到这一点。但我猜你实际上想创建从movie到genre的外键(“每一部电影都应该属于一个现有类型”),所以将它添加到该表中。 -
你是对的。我希望每部电影都属于一个流派,所以我将外键从流派更改为电影,然后更改“创建表”的顺序,它工作正常。谢谢@Solarflare!
标签: mysql foreign-keys