您现在的位置: 365建站网 > 365学习 > mysql 主键重复 Duplicate entry '7192542' for key 'PRIMARY'问题解决方法

mysql 主键重复 Duplicate entry '7192542' for key 'PRIMARY'问题解决方法

文章来源:365jz.com     点击数:574    更新时间:2018-10-31 08:27   参与评论

首先我们用MySQL自带的可视化管理工具MySQL WorkBench打开数据库及表格,出现此问题的主要原因是主键已经有了名为“XXX”的那项,实际上我写的代码并没有重复也会弹出此报错,下面我们看一下我自己的解决方案。

   Mysql导入大量数据时,会报如下错误,主键重复,不能再继续执行。

   Query:

INSERT INTO `FNDCN_MNG` VALUES(787390578, 1, '杨明', 95585, '2015-06-08', '招募说明书', 80100, NULL, '1', NULL, '3', '2015-06-29', NULL, '1', '    杨明先生,中央财经大学硕士研究生,14年银行、基金从业经历。曾在上海银行从事信贷员、交易员及风险管理工作。2004年10月加入华安基金管理有限公司,任研究发展部研究员。2013年6月起担任华安策略优选股票型基金的基金经理。2014年6月起担任投资研究部高级总监。', '2015-11-09 12:33:58', '2016-01-06 21:34:41', '2015-12-31 12:14:18', 'JY', '488969752640', NULL, NULL, NULL, NULL)


Error occured at:2016-02-16 15:23:41

Line no.:220

Error Code: 1062 - Duplicate entry '95585-80100-2015-06-29 00:00:00-1--1' for key 'IDX_FNDCN_MNG'

解决方案一:

   将主键设置为自动增长。可以在数据库手动将相关表设置ID为自增长。

   如图:

  

20170604171148628.jpg

   再继续导入正常。

解决方案二:

  问题描述:单独导入出错sql,会报如下错误:

1 queries executed, 0 success, 1 errors, 0 warnings

查询:INSERT INTO `FNDCN_MNG` VALUES(787192513, 1, '丁进', 150150, '2015-12-28', '招募说明书', 80100, NULL, '1', NULL, '3', '20...

错误代码: 1062

Duplicate entry '787192513' for key 'PRIMARY'

   检查了下,主键生成策略是:@GeneratedValue(strategy=GenerationType.IDENTITY),也没问题。

   删除导入出错的表;

   新建需要导入数据的表;

我的问题解决是在数据库中:在数据库中,没有将主键设为自动增长。将已经存在的表的主键设为自动增长SQL语句为:

alter table course change course_id   course_id   int(10)   not null   auto_increment ; 

   然后用sql脚本的方式导入所需数据,这样也可以很容易定位错误。

--------------------- 

1、mysql数据库设置数据库主键自增的规律

·第一,在主键字段上增加  AUTO_INCREMENT

`id` int(8) NOT NULL AUTO_INCREMENT COMMENT '主键',

·第二,默认表的第一条数据是从1开始计数的,但是在建表语句中是可以修改这个起始值的,比如下面就是设置为11为基值,下一次插入的是12

CREATE TABLE 'table_name'(

)ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='某某表'

而且通过可视化工具可以发现,这个基本值一直是在变化的,即每次增加一个,这个自动增量的意思是,当自动插入下一个数据时,主键的为8


2、问题描述

在一个操作过程中,出现了这样的描述,即6这个主键在数据库中已经存在了

 Duplicate entry '6' for key 'PRIMARY'


3、问题分析

网上大概说明有这么几种情况

1、数据库该字段已经自增到了最大值

2、数据库表结构损坏(一般是由于频繁手动修改数据导致的)

3、由于手动插入了较大数据,导致mysql自增到这个较大数值时主键重复了


4、问题复现

很遗憾在后来的操作中,问题并没有能够复现 但是在一个相隔很多天的试验中出现了另外一个问题

开始主键是自增的,一致自增到了5,后来修改了数据库基数为100

然后自增了一些数据

过来两天,再次执行自增的时候居然报错了,而且不是明显的错误

后来把100等之后添加的数据删除,自增测试程序又正常了


5、问题总结

对于mysql 数据库而言,在自增主键的时候,手动修改数据要比较慎重,最好遵循三个原则


1、手动添加数据和自动添加数据不要混淆,即手动的就是手动的,避免和自动添加数据的主键重复


2、手动更改数据的时候,不要更改主键,只是修改其余字段


3、自增数据情况下,不要修改表的自增基数


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (574人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------