请教mysql innodb表的自增主键重置问题

时间:2022-08-29 07:32:53
数据库重启或者断电后,innodb表的自增字段的值会被重置,这是mysql官方上的一个bug(http://bugs.mysql.com/bug.php?id=199),请教大家都是怎么解决的?自己建表记录自增值的方法不适合我们项目。我是在windows平台使用mysql的。

3 个解决方案

#1


这个我认为不是bug
auto_increment的计数的值是存在内存中的,而非磁盘上。当你重启服务他会读取表中最大的值的放入auto_increment的计数值中。
这种重置可以说是再利用,减少一些浪费。也不会造成什么bug或重号的问题
如现在是计数值3----》你删除掉3的列-----》计数值变为4------》当你重启服务----》表中最大的是2----》计数值是3
----》这样在插入的时候就是3,而不重启服务的话应该是4

#2


引用 1 楼 qq271175778 的回复:
这个我认为不是bug
auto_increment的计数的值是存在内存中的,而非磁盘上。当你重启服务他会读取表中最大的值的放入auto_increment的计数值中。
这种重置可以说是再利用,减少一些浪费。也不会造成什么bug或重号的问题
如现在是计数值3----》你删除掉3的列-----》计数值变为4------》当你重启服务----》表中最大的是2----》计数值是3
----》这样在插入的时候就是3,而不重启服务的话应该是4

说的有点小问题,大概意思我想你应该知道了
如现在是计数值3(表中最大的是2)----》你删除掉2的列-----》计数值还是3(当插入的时候就是表中就是3)------》当你重启服务----》表中最大的是1----》计数值是2
----》这样在插入的时候就是2,而不重启服务的话应该是3

#3


对应用完全没有影响吧  只管插入就行了 

#1


这个我认为不是bug
auto_increment的计数的值是存在内存中的,而非磁盘上。当你重启服务他会读取表中最大的值的放入auto_increment的计数值中。
这种重置可以说是再利用,减少一些浪费。也不会造成什么bug或重号的问题
如现在是计数值3----》你删除掉3的列-----》计数值变为4------》当你重启服务----》表中最大的是2----》计数值是3
----》这样在插入的时候就是3,而不重启服务的话应该是4

#2


引用 1 楼 qq271175778 的回复:
这个我认为不是bug
auto_increment的计数的值是存在内存中的,而非磁盘上。当你重启服务他会读取表中最大的值的放入auto_increment的计数值中。
这种重置可以说是再利用,减少一些浪费。也不会造成什么bug或重号的问题
如现在是计数值3----》你删除掉3的列-----》计数值变为4------》当你重启服务----》表中最大的是2----》计数值是3
----》这样在插入的时候就是3,而不重启服务的话应该是4

说的有点小问题,大概意思我想你应该知道了
如现在是计数值3(表中最大的是2)----》你删除掉2的列-----》计数值还是3(当插入的时候就是表中就是3)------》当你重启服务----》表中最大的是1----》计数值是2
----》这样在插入的时候就是2,而不重启服务的话应该是3

#3


对应用完全没有影响吧  只管插入就行了