日期:2014-05-16  浏览次数:20911 次

MySQl数据表中的ID设置为自增,为什么中间会出现ID编号不连续的情况
比如说ID是自增的,从1到1073都是正常的,但是1073之后就变成1086了。这是什么原因?该怎样解决?

------解决方案--------------------
因为有人删除了之间的id
------解决方案--------------------
中间如果有别的事务作了delete操作。
------解决方案--------------------
执行过什么操作,比如插入,即使没有成功,自增也要+1
------解决方案--------------------
可能的原因很多, 建议楼主还是打开普通查询日志,然后在下次再出现类似情况时可以通过日志分析。
一般可能是,1)删除了记录,2)并发操作而导致一方插入示成功。3)事务操作未成功被回滚,4)。。。。
------解决方案--------------------
数据库很严格的,说自增1他就自增1。
如果发现不是这样的,你就照这 #7 的同志的建议去查看错误。
------解决方案--------------------
同意7,8楼的查下日志,看看有没有插入失败或者删除的操作,事务回滚的我认为一般是不多的,除非你的系统用到

------解决方案--------------------
应该是有人把1074-1085这些记录项删除过...
------解决方案--------------------
1.有并发进行了数据删除;
2.有INSERT失败,但是却触发了AUTOINCREMENT计数器+1操作;
3.可能有人手工写入一个较大的ID值,也即显示指定的;


推荐文章:
MySQL数据库InnoDB存储引擎Log漫游 简述:详细分析了InnoDB存储引擎Checkpoint技术,大家可以仔细研读!
------解决方案--------------------
id auto_increment(id)如果是自增列的话,不会出现此情况的,除非中间
有删除操作或对表的id做了破坏性的操作,否则不会出现上述情况的。
------解决方案--------------------
把日志的文件贴出出来分析一下。对数据库所做的什么样的操作不就一目了然了。
------解决方案--------------------
打开MYSQL的官方免费手册,搜索 日志。 这个总会吧。
------解决方案--------------------
去修改my.ini,将前面的#去掉相应功能就开启了