输入重复,尽管一切正常

时间:2018-07-24 11:13:41

标签: mysql node.js

我的数据库有问题,在我的数据库中创建了这样的交叉表:

CREATE TABLE Spacial_Tasks (
Task_Number Int (11),
FK_Member Int (11),
CONSTRAINT PK_Special_Tasks PRIMARY KEY (Task_Number, FK_Member),
FOREIGN KEY (FK_Memeber) REFERENCES member(Id)
);

现在,我希望此表的设计方式使得例如我团队的每个主持人都可以从“ Task_Number”获得一定的编号,而“ FK_Member”是所有成员主表的ID。

现在,当我在表中放入新数据集时,node.js(或mysql模块)会引发错误:

Error: ER_DUP_ENTRY: Duplicate entry '0-1' for key 'PRIMARY'

尽管发生此错误,但新数据集已被我的数据库接受。

我做错了什么还是可以某种方式关闭此消息?

1 个答案:

答案 0 :(得分:1)

我将尝试将评论中的内容汇总在一起。

PRIMARY KEY是表中每一行的唯一值。

在您的示例中,您从两个值PRIMARY KEY构造了(Task_Number, FK_Member)

FK_Member-是唯一的用户ID,Task_Number是每个任务的预定义值集。

现在,当您尝试为ID = 155的某些用户插入3个主持人(0)任务时。

Mysql收到要保存的主键:

0155 - first record will be saved as for now its unique
0155 - gives primary key error as value is the same from row number 1
0155 - same error.

要解决此问题,您只需制作不同的主键,通常是其auto_increment

CREATE TABLE Spacial_Tasks (
Task_Id Int (11) UNSIGNED AUTO_INCREMENT,
Task_Number Int (11),
FK_Member Int (11),
PRIMARY KEY (Task_Id),
FOREIGN KEY (FK_Memeber) REFERENCES member(Id)
);

希望这会有所帮助。

相关问题