可能重复:
Why does MySQL autoincrement increase on failed inserts?
我有一张桌子
CREATE TABLE `authors` (
`author_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
我用来收集作者的名字。我用oursql来填充这个表。查询是
query_author ="""INSERT INTO authors (name) VALUES (?) ON DUPLICATE KEY UPDATE author_id=LAST_INSERT_ID(author_id)"""
我按照这样执行:
cursor.execute(query_author, (author,))
author_id = cursor.lastrowid # further using of the authors id.
现在我观察到,自动增量并不总是将author_id
增加1.它会跳跃。在第1000行,我有索引1258.我仔细检查了我的脚本,但这是我修改表authors
的唯一通道。 什么可能会影响这种行为? my.cnf中的一些设置我不知道?我对此毫无头绪。