java - 我正在尝试找到一种方法来处理 key '1' 的重复条目 'movieID' 的错误 1062

标签 java mysql-workbench

我正在尝试找到一种方法,将键 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/

相关文章:

java - 将图像包装到 Jframe

java - API 调用中的 HTML 实体编码不正确

java - 如何使用assertEquals 编写Junit 测试来查看每种硬币将返回多少个?

java - 无法在Eclipse中启动通过Maven运行的tomcat

MySQL Workbench,如何修复 "SELECT is not valid at this position for this server version"错误

Mysql函数错误-无法弄清楚

MySQL 重音字符

java - Spring IoC : Reasons to have null checks with constructor autowiring

mysql - 如何在 MySQL 中测试 Select for Update

mysql - 如何删除 mysql 中除少数列之外的所有列?