我试图创建三个表,但最后一个表的外键出现了错误,我确保外键在两个表中具有相同的类型,相同的规范,并且它是父表中的主键。
我也尝试过以前的文章中提出的解决方案,但是情况不一样,所以它不起作用。
CREATE TABLE Movies (
movie_title VARCHAR(86),
imdb_id VARCHAR(9),
movie_id INT,
runtime INT,
budget INT,
revenue INT,
release_date DATE,
vote_count INT,
vote_average DOUBLE,
popularity DOUBLE,
language VARCHAR(2),
tagline VARCHAR(221),
overview TEXT(992),
PRIMARY KEY (movie_id),
FULLTEXT idx (overview)
);我明白了:SUCCESFULLY CREATED TABLE Movies
CREATE TABLE Movie_Genre (
movie_id INT,
genre_id INT,
PRIMARY KEY (movie_id, genre_id),
FOREIGN KEY (movie_id) REFERENCES Movies(movie_id)
);我明白了:SUCCESFULLY CREATED TABLE Movie_Genre
CREATE TABLE Genres (
genre_id INT,
genre_name VARCHAR(15),
PRIMARY KEY (genre_id),
FOREIGN KEY (genre_id) REFERENCES Movie_Genre(genre_id)
);我得到:
Failed to add the foreign key constraint. Missing index for constraint 'Genres_ibfk_1' in the referenced table 'Movie_Genre'发布于 2022-01-08 10:22:57
外键应该在movie_genre表上,而不是类型表上。
发布于 2022-01-08 10:43:15
你的结构对我没有任何意义。我猜你想储存哪部电影有哪种类型。因此,类型表不应该有任何外键。
您需要同时使用movie_id和genre_id作为Movie_Genre表中的外键:
CREATE TABLE Movie_Genre (
movie_id INT,
genre_id INT,
PRIMARY KEY (movie_id, genre_id),
FOREIGN KEY (movie_id) REFERENCES Movies(movie_id),
FOREIGN KEY (genre_id) REFERENCES Genres(genre_id)
);并将外键放在“类型”表中:
CREATE TABLE Genres (
genre_id INT,
genre_name VARCHAR(15),
PRIMARY KEY (genre_id)
);注意,现在必须在Genres之前创建Movie_Genres。
https://stackoverflow.com/questions/70631366
复制相似问题