为什么具有唯一键的表会不断增加ID字段?

时间:2014-02-27 06:59:18

标签: mysql

我有一个非常普通的MySQL表,带有ID字段和几个varchars。其中一个varchars设置为UNIQUE KEY。奇怪的是(对我来说)是每当我尝试在UNIQUE字段中插入重复值时,插入被丢弃(正确)但ID字段增加1,就像插入成功一样。这是表格定义:

CREATE TABLE `urls` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `url` varchar(512) DEFAULT NULL,
  `label` varchar(150) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `url` (`url`)
) 

表中只有10行或12行,但由于插入尝试,ID序列如下:1,2,3,5,12,15,30等。

我应该以不同的方式设置唯一约束,还是在每次INSERT之前必须执行SELECT以检查重复值?

1 个答案:

答案 0 :(得分:1)

这是MySQL中的已知错误,如以下链接中所述 http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html#innodb-auto-increment-configurable

innodb_autoinc_lock_mode = 0

有关此内容的更多参考,请阅读以下链接

http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html