mysql 主键自增 但是报主键重复的异常问题探究- Duplicate entry

来源:互联网 发布:网络工作 编辑:程序博客网 时间:2024/05/17 23:49

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、自增数据情况下,不要修改表的自增基数








阅读全文
0 0
原创粉丝点击