| Bug #21404 | AUTO_INCREMENT value reset when Adding FKEY (or ALTER?) | ||
|---|---|---|---|
| Submitted: | 1 Aug 2006 19:34 | Modified: | 10 Jan 2007 13:11 |
| Reporter: | Eric Carlstrom | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S2 (Serious) |
| Version: | MySQL - 5.0.18-standard/5.0/5.1bk | OS: | Linux (Fedora) |
| Assigned to: | Assigned Account | CPU Architecture: | Any |
| Tags: | alter, auto_increment | ||
[1 Aug 2006 19:34]
Eric Carlstrom
[1 Aug 2006 19:36]
Eric Carlstrom
Updating Version/OS: MySQL - 5.0.18-standard Fedora
[1 Aug 2006 20:33]
Heikki Tuuri
A new foreign key is created by recreating and rebuilding the whole table. The rebuilt table should inherit the auto-inc counter from the old table. Hmm... does CREATE INDEX also reset the auto-inc counter?
[1 Aug 2006 20:40]
MySQL Verification Team
Thank you for the bug report.
miguel@hegel:~/dbs/5.0> bin/mysqladmin -uroot create dbo
miguel@hegel:~/dbs/5.0> bin/mysql -uroot dbo
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.0.25-debug
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE TABLE `foo` (
-> `id` int(10) unsigned NOT NULL auto_increment,
-> `title` varchar(128) NOT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=100;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> CREATE TABLE `bar` (
-> `id` int(10) unsigned NOT NULL auto_increment,
-> `foo_id` int(10) unsigned default NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=200;
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='bar'\G
*************************** 1. row ***************************
TABLE_CATALOG: NULL
TABLE_SCHEMA: dbo
TABLE_NAME: bar
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Compact
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
AUTO_INCREMENT: 200
CREATE_TIME: 2006-08-01 17:13:23
UPDATE_TIME: NULL
CHECK_TIME: NULL
TABLE_COLLATION: utf8_general_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT: InnoDB free: 4096 kB
1 row in set (0.01 sec)
mysql> ALTER TABLE `bar` ADD CONSTRAINT `foo_bar_1` FOREIGN KEY (`foo_id`) REFERENCES
-> `foo`(`id`);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='bar'\G
*************************** 1. row ***************************
TABLE_CATALOG: NULL
TABLE_SCHEMA: dbo
TABLE_NAME: bar
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Compact
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 16384
DATA_FREE: 0
AUTO_INCREMENT: 1
CREATE_TIME: 2006-08-01 17:15:08
UPDATE_TIME: NULL
CHECK_TIME: NULL
TABLE_COLLATION: utf8_general_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT: InnoDB free: 4096 kB; (`foo_id`) REFER `dbo/foo`(`id`)
1 row in set (0.01 sec)
mysql>
-------------------------------------------------------------------------
mysql> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='bar'\G
*************************** 1. row ***************************
TABLE_CATALOG: NULL
TABLE_SCHEMA: dbo
TABLE_NAME: bar
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Compact
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
AUTO_INCREMENT: 200
CREATE_TIME: 2006-08-01 17:19:59
UPDATE_TIME: NULL
CHECK_TIME: NULL
TABLE_COLLATION: utf8_general_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT: InnoDB free: 4096 kB
1 row in set (0.02 sec)
mysql> ALTER TABLE `bar` ADD CONSTRAINT `foo_bar_1` FOREIGN KEY (`foo_id`) REFERENCES
-> `foo`(`id`);
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='bar'\G
*************************** 1. row ***************************
TABLE_CATALOG: NULL
TABLE_SCHEMA: dbo
TABLE_NAME: bar
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Compact
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 16384
DATA_FREE: 0
AUTO_INCREMENT: 1
CREATE_TIME: 2006-08-01 17:20:28
UPDATE_TIME: NULL
CHECK_TIME: NULL
TABLE_COLLATION: utf8_general_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT: InnoDB free: 3072 kB; (`foo_id`) REFER `dbo`.`foo`(`id`)
1 row in set (0.01 sec)
mysql> SELECT VERSION();
+-------------------+
| VERSION() |
+-------------------+
| 5.1.12-beta-debug |
+-------------------+
1 row in set (0.00 sec)
mysql>
[19 Sep 2006 20:03]
[ name withheld ]
I get the same error when I create an index on a table. Example:
SET GLOBAL sql_mode='ansi,strict_trans_tables';
SET SESSION sql_mode='ansi,strict_trans_tables,no_auto_value_on_zero';
CREATE TABLE foo (
id INTEGER NOT NULL AUTO_INCREMENT,
key_name VARCHAR(64) NOT NULL,
CONSTRAINT pk_event_type__id
PRIMARY KEY (id)
)
ENGINE InnoDB
AUTO_INCREMENT 1024;
CREATE INDEX idx_foo_key_name on foo(key_name);
INSERT INTO foo (key_name) VALUES ('foo');
INSERT INTO foo (key_name) VALUES ('bar');
SELECT * FROM foo;
When I run this through mysql < test.sql, it outputs:
id key_name
2 bar
1 foo
What it should output is
id key_name
1024 foo
1025 bar
MySQL 5.0.24a on Mac OS X.
[8 Nov 2006 14:56]
Heikki Tuuri
Marko, please make the altered table to inherit the auto-inc counter value of the old table. Regards, Heikki
[10 Jan 2007 13:11]
Marko Mäkelä
Fixing Bug #23313 fixes also this one.
[26 Apr 2007 11:36]
Bugs System
Pushed into 5.1.18-beta
[26 Apr 2007 11:37]
Bugs System
Pushed into 5.0.42
[5 May 2010 15:03]
Bugs System
Pushed into 5.1.47 (revid:joro@sun.com-20100505145753-ivlt4hclbrjy8eye) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[28 May 2010 5:46]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100524190136-egaq7e8zgkwb9aqi) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (pib:16)
[28 May 2010 6:16]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100524190941-nuudpx60if25wsvx) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[28 May 2010 6:43]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100524185725-c8k5q7v60i5nix3t) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 11:46]
Bugs System
Pushed into 5.1.47-ndb-7.0.16 (revid:martin.skold@mysql.com-20100617114014-bva0dy24yyd67697) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 12:23]
Bugs System
Pushed into 5.1.47-ndb-6.2.19 (revid:martin.skold@mysql.com-20100617115448-idrbic6gbki37h1c) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 13:11]
Bugs System
Pushed into 5.1.47-ndb-6.3.35 (revid:martin.skold@mysql.com-20100617114611-61aqbb52j752y116) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
