我正在尝试找到一种方法,将键 1 的重复值存储在 movieID 的多个流派中。
我已经尝试过在 table 上自动增量,但仍然有这些错误
创建表 movie_genres ( movieID INT NOT NULL AUTO_INCRMENT, 类型 VARCHAR(50) NOT NULL, 主键(电影ID), 外键(movieID)引用电影(ID) );
错误 1062:1062:键“movieID”的条目“1”重复
SQL语句:
INSERT INTO movie
.movie_genres
(movieID
, genre
) VALUES ('1', 'Animation')
错误 1062:1062:键“movieID”的条目“1”重复
SQL语句:
INSERT INTO movie
.movie_genres
(movieID
, genre
) VALUES ('1', 'Children')
错误 1062:1062:键“movieID”的条目“1”重复
SQL语句:
INSERT INTO movie
.movie_genres
(movieID
, genre
) VALUES ('1', '喜剧')
错误 1062:1062:键“movieID”的条目“1”重复
SQL语句:
INSERT INTO movie
.movie_genres
(movieID
, genre
) VALUES ('1', '奇幻')
最佳答案
您的数据库设计存在一些基本问题,特别是它缺少将电影与其类型(1 到 n)相关联的连接表。以下是关于您的架构的一项建议:
CREATE TABLE movies (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255)
);
CREATE TABLE genres (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
genre VARCHAR(255)
);
CREATE TABLE movie_genres (
movieID INT NOT NULL,
genreID INT NOT NULL,
PRIMARY KEY (movieID, genreID)
);
现在,有了这个架构,您的插入可能如下所示:
INSERT INTO movies (ID, title) VALUES (1, 'Avatar');
INSERT INTO genres (ID, genre)
VALUES
(1, 'Animation'), (2, 'Children'), (3, 'Comedy'), (4, 'Fantasy');
INSERT INTO movie_genres (movieID, genreID)
VALUES
(1, 1), (1, 2), (1, 3), (1, 4);
这里的基本思想是电影和类型表的存在只是为了跟踪......电影和类型。他们对彼此一无所知。为了处理电影和流派之间的关系,更新后的 movie_genres
表开始发挥作用。它仅存储电影及其相应类型的 ID。
关于java - 我正在尝试找到一种方法来处理 key '1' 的重复条目 'movieID' 的错误 1062,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57234075/