错误1062:非主要字段中的重复条目

时间:2015-11-09 15:08:26

标签: mysql

我最近开始使用MySQL进行学习工作,现在面临以下问题:

我的前任创建了一个以下结构的文本表:

+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| TokenId    | int(11)      | NO   | PRI | 0       |       |
| Value      | varchar(255) | YES  |     | NULL    |       |
| Frequency  | int(11)      | YES  |     | NULL    |       |
| PMID       | int(11)      | YES  | MUL | NULL    |       |
+------------+--------------+------+-----+---------+-------+

在重组方面,我添加了以下专栏:

+------------+--------------+------+-----+---------+-------+
| NewTokenId | int(11)      | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+

如果我现在运行查询:

insert into TitleToken(NewTokenId) select t.TokenId from Token as t, TitleToken as tt where t.Value = tt.Value

甚至查询:

insert into TitleToken(NewTokenId) values(1);

我得到以下输出:

  

ERROR 1062(23000):对于'PRIMARY'键重复输入'0'

正如我所说,我相对较新(动手)* SQL,感觉这是一个愚蠢的错误,但由于NewTokenId列没有主键,不是唯一的,甚至Null是YES,我想我是能够插入任何我想要的东西。

任何暗示都会受到赞赏......在此先感谢:)

2 个答案:

答案 0 :(得分:0)

您正在尝试在不为TokenId提供唯一值的情况下对表执行插入操作。默认情况下,根据表格说明,TokenId默认为0,您不能在该列中包含多个相同的值。

答案 1 :(得分:0)

这里的问题是你有一个主键“TokenID”的默认值,如果你没有在insert语句中插入键的值,系统将自动插入0.但是,如果有另一个元组该属性的值相同(可能因为默认值为0),您将收到该错误。

相关问题