今日小艾在修改数据时mysql报错1062:Duplicate entry ‘’ for key ‘PRIMARY’,一开始以为是字段类型错误;后面发现是该表字段设置了索引建,禁止改字段有重复的数据解决方法:若你的需求必须有重复数据产生的话就删除该字段的索引建即可更新数据(小艾的是该用户有多成身份电话号码冲突)...
网上查了很多,都说不满足主键约束啥的等等都没解决,我的问题主要是删除记录的
时
候删不了,最后发现是
中
间表的外键默认删除
时
是RESTRICT,
当取值为No Action或者Restrict
时
,则当在父表(即外键的来源表)
中
删除对应记录
时
,首先检查该记录是否有对应外键,如果有则不允许删除。
当取值为Cascade
时
,则当在父表(即外键的来源表)
中
删除对应记录
时
,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)
中
的记录。
当取值为Set Null
时
,则当在父表(即外键的来源表)
中
删除对应记录
时
,首先检查该记录是否有对应外键,如果有则设置子表
中
该外键值为null(不
问题解释:
Dupli
cat
e
entry
‘…’ for
key
‘
PRIMARY
,即
插入
数据
时
,要
插入
数据
的主键
数据
(…)已经存在,不能再重复添加了。例:
Dupli
cat
e
entry
‘0’ for
key
‘
PRIMARY
是指主键为0的
数据
已经存在,不能再
插入
主键值为0的
数据
了。
问题解决:
在执行
插入
操作insert前,...
近日一直在折腾vps ,刚刚碰到在搬移wordpress过程
中
导入
数据
库的
时
候。碰到了 #1062 –
Dupli
cat
e
entry
‘1′ for
key
‘
PRIMARY
’ 当
时
那个急啊,原本的
数据
我已经全部删除了,没办法只有请求万能的百度了。我找了大半天终于给我给我找到了。兴奋ing,马上测试,O(∩_∩)O哈哈~成功了。 现在附上解决办法只要把原来的老
数据
清空导入就可以了。 原理我不明白,贴上来你们自己看吧。反正达到目的就ok了、 “提示#1062 –
Dupli
cat
e
entry
‘1′ for
key
‘
PRIMARY
’了,后来才知道,原来上次超过限制的已经导进去了一部分,而i
深入理解和优雅使用ON
DUPLI
CAT
E
KEY
Update 解决存在则
更新
,不存在则新增的问题
先看语法INSERT INTO table(id,a,……) values(1,‘xh’,……) ON
DUPLI
CAT
E
KEY
Update a=‘value’,……;
1,先创建表结构如下
DROP TABLE IF EXISTS `t_ware_
dupli
cat
e`;
CREATE TABLE `t_ware_
dupli
cat
e` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`part_no` varchar(100) DEFAU
今天在使用
数据
库的过程
中
,发现一直报
dupli
cat
e
entry
for
key
primary
的错误,如下图所示:
这个问题直译过来就是主键设置重复,或者说是主键冲突,因为第一次碰到这样的问题,有些不明所以,就在网上差了一些资料,发现了这么一篇文章 ======> 这是文章链接
其
中
说到这种情况的可能原因有两种:
主键没有设置自增
插入
线程频率较高,没有处理好事务,造成
插入
sql执行顺序混乱
该文章
中
也给予了对应的
解决方案
,可以参考。
不过这篇文章
中
所说到的情况并不适应于我今天遇到的问题
数据
表
中
设置了主键(
Primary
Key
),而主键对应的值是不允许重复的。
错误提示为:你
插入
的记录与
数据
表
中
原有记录的主键重复了(
Dupli
cat
e)。所以
插入
失败。
解决方案
:
1.使用ignore,如果
插入
的记录
中
存在重复值会忽略重复值的该记录行,不影响其他行的
插入
。
INSERT IGNORE INTO Table_name(…..) VALUES(1,1),(2,2),(3,3);
2.使用replace当
插入
的记录遇到主键或者唯一重复
时
先删除表
中
重复的记录行再
插入
REPLACE INTO Table_name() VALUES(1,1),(2,2),(3,3)
3.on
dupli
cat
e
key
update后面使用val
例如,如果列a被定义为unique,并且值为1,则下列语句有同样的效果,也就是说一旦出入的记录
中
存在a=1的情况,直接
更新
c = c + 1,而不执行c = 3的操作。 代码如下: insert into table(a, b, c) values (1, 2, 3) on
dupli
cat
e
key
update c = c + 1;1 update table set c = c + 1 where a = 1; 另外值得一提的是,这个语句知识
mysql
中
,而标准sql语句
中
是没有的。 INSERT INTO .. ON
DUPLI
CAT
E
KEY
更新
多行记录 如果在INSERT语句末
mysql
报错:
Dupli
cat
e
entry
‘1’ for
key
‘
PRIMARY
’
原因:主键是在同一张表
中
必须是唯一的,如果在进行
数据
插入
的
时
候指定的主键与表
中
已有 的
数据
重复的话则会导致违反主键约束的异常。
解决方案
:清空
数据
库...
出现错误的原因是
mysql
数据
表设置了主键
primary
key
,而批量写入的
数据
中
设了主键的字段与
数据
库
中
的
数据
有重复。那么解决方法就简单了,剔除重复的
数据
。
拿到报错信息,从
数据
中
移除重复的
数据
,重新执行写入操作,完成。
//此处是可能会出现此异常的java语句
}
cat
ch(SQLException e)
插入
的
数据
中
,主键的值已经存在,违反了主键的唯一性。例如,将id设置为自增的主键,
插入
数据
的id已经存在,会提示如下信息:
ERROR 1062 (23000):
Dupli
cat
e
entry
'2093' for
key
'
PRIMARY
'
插入
的
数据
中
,唯一索引的值已经存在,违反其唯一性。例如,将用户名和资源组名设置为复合的唯一索引,
插入
数据
的用户名和
mysql
> desc t111;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null |
Key
| Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(24) | YES | | robert |
"
Dupli
cat
e
entry
for
key
primary
" 是
MySQL
数据
库错误信息之一,表示在尝试
插入
一条新记录
时
,该记录的主键与表
中
已有的某条记录的主键值完全相同,因而无法
插入
。 在
MySQL
中
,每个表都必须有一个主键,这个主键是唯一的,可以通过它来唯一标识一行
数据
。所以,“
dupli
cat
e
entry
for
key
primary
”错误提示就表明该表
中
已有一个相同的主键值,不能重复
插入
。
为了解决这个问题,有以下几种方法:
1.检查表结构,确认每个表的主键设置正确且为唯一标识,确保没有对主键重复使用。
2.查找重复的
数据
,通过查询工具查找已经存在的记录,找出重复的
数据
并删除或修改它们。
3.在
插入
数据
时
,通过使用REPLACE或INSERT IGNORE等指令,避免重复
插入
数据
。
如果不能解决这个问题,可以联系
数据
库管理员或者开发人员,获得更详细的支持。