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