mysql - 错误 1062 : duplicate entry in non-primary field

标签 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): Duplicate entry '0' for key 'PRIMARY'

正如我所说,我对(实际操作)*SQL 比较陌生,感觉像是一个愚蠢的错误,但由于 NewTokenId 列不是主键,不是唯一的,甚至 Null 也是 YES,我想我会基本上能够插入我想要的任何内容。

任何提示将不胜感激...提前致谢:)

最佳答案

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

关于mysql - 错误 1062 : duplicate entry in non-primary field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33612097/

相关文章:

php - AND 运算符不能在使用 MySQL 的 PHP 函数中工作

mysql - 我如何使用 mysql 事件在半夜发布帖子

MySQL 查询避免使用变量

php - SQL 查询不适用于 PHP 但适用于 SQL

mysql - 使用 liquibase.properties 的 Liquibase MySQL JDBC 驱动程序连接错误

mysql - 如何将 shell 命令的结果分配给 MySQL 变量?

php - 以数据库方式处理标签的更有效方法是什么?

mysql - 显示事件的 MySql 连接和程序的事件用户

mysql - 通过 inno setup 使用 mysql 创建 vb6 设置

php - Codeigniter 查询中的动态分配值类型过滤器