我有一个非常普通的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以检查重复值?
答案 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