Bug #34077 | Storing auto_increment counter on the disk. | ||
---|---|---|---|
Submitted: | 26 Jan 2008 10:38 | Modified: | 20 Oct 2008 21:39 |
Reporter: | Andrej Nagy | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S4 (Feature request) |
Version: | 5.0-bk | OS: | Any (AUTO_INCREMENT) |
Assigned to: | Assigned Account | CPU Architecture: | Any |
[26 Jan 2008 10:38]
Andrej Nagy
[29 Jan 2008 11:56]
Susanne Ebrecht
Thank you for your bug report. This issue has already been fixed in the latest released version of that product, which you can download at http://www.mysql.com/downloads/ Our newest version at the moment is: MySQL 5.0.51 I tested with MySQL 5.0.38 and 5.0.51, same results. Look here: mysql> create table t(id serial, num integer) engine=innodb; mysql> show create table t\G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE `t` ( `id` bigint(20) unsigned NOT NULL auto_increment, `num` int(11) default NULL, UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 mysql> insert into t(num) values(1),(2),(3),(4),(5); mysql> select * from t; +----+------+ | id | num | +----+------+ | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 5 | 5 | +----+------+ mysql> delete from t; Query OK, 5 rows affected (0.02 sec) mysql> select * from t; Empty set (0.00 sec) mysql> show create table t\G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE `t` ( `id` bigint(20) unsigned NOT NULL auto_increment, `num` int(11) default NULL, UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 mysql> insert into t(num) values(1),(2),(3),(4),(5); mysql> select * from t; +----+------+ | id | num | +----+------+ | 6 | 1 | | 7 | 2 | | 8 | 3 | | 9 | 4 | | 10 | 5 | +----+------+
[29 Jan 2008 13:07]
Susanne Ebrecht
Sorry, my misstake. I forget the restart. On the same session: mysql> delete from t; mysql> show create table t\G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE `t` ( `id` bigint(20) unsigned NOT NULL auto_increment, `num` int(11) default NULL, UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1 mysql> \q $ ./bin/mysqladmin shutdown $ ./libexec/mysqld --defaults-file=... mysql> show create table t\G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE `t` ( `id` bigint(20) unsigned NOT NULL auto_increment, `num` int(11) default NULL, UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 mysql> insert into t(num) values(1),(2),(3),(4),(5); mysql> select * from t; +----+------+ | id | num | +----+------+ | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 5 | 5 | +----+------+ The id is 1 instead of 11. Using MyISAM all works as expected. After Shutdown/Start the next id is 11.
[2 Feb 2008 0:00]
Mattias Jonsson
This is partly documented behavior. From http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html Beginning with MySQL 5.0.3, InnoDB supports the AUTO_INCREMENT = N table option in CREATE TABLE and ALTER TABLE statements, to set the initial counter value or alter the current counter value. The effect of this option is canceled by a server restart, for reasons discussed earlier in this section.
[20 Oct 2008 21:39]
Mattias Jonsson
This is a duplicate of bug#21641