mysql自动增量错误

时间:2013-07-09 11:22:07

标签: mysql auto-increment

我有一个简单的

INSERT INTO t1 (fields...) (SELECT fields... FROM t2);

它插入大约8.000行,表的自动增量值设置为~16.000,但它不是2倍。我没有在查询中包含自动递增的id,并且表被截断。它可以是一个bug吗?我有5.5.24版。 为什么会这样,我怎么能避免这种情况?

CREATE TABLE `order` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `` int(4) NOT NULL COMMENT '',
  `` int(6) NOT NULL COMMENT '',
  `` varchar(255) NOT NULL COMMENT '',
  `` varchar(255) NOT NULL COMMENT '',
  `` bigint(10) unsigned NOT NULL COMMENT '',
  `` int(5) unsigned NOT NULL COMMENT '',
  `` int(5) unsigned NOT NULL COMMENT '',
  `` int(8) unsigned NOT NULL COMMENT '',
  `` varchar(255) DEFAULT NULL COMMENT '',
  `` int(3) DEFAULT NULL COMMENT '',
  `` int(3) DEFAULT NULL COMMENT '',
  `` date NOT NULL COMMENT '',
  `` date DEFAULT NULL,
  `` date DEFAULT NULL COMMENT '',
  `` int(5) DEFAULT NULL COMMENT '',
  `` varchar(2) DEFAULT NULL COMMENT '',
  `` int(5) DEFAULT NULL COMMENT '',
  `` varchar(255) DEFAULT NULL,
  `` varchar(255) DEFAULT NULL,
  `` char(1) DEFAULT NULL,
  `` datetime DEFAULT NULL,
  `` int(10) unsigned DEFAULT NULL,
  `` datetime DEFAULT NULL,
  `` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `` (``),
  KEY `` (``),
  KEY `` (``),
  CONSTRAINT `` FOREIGN KEY (``) REFERENCES `users` (`id`),
  CONSTRAINT `` FOREIGN KEY (``) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8440 DEFAULT CHARSET=utf8

感谢。

1 个答案:

答案 0 :(得分:1)

这可能是由服务器的配置引起的(例如/etc/my.cnf): 您可以设置auto_increment_incrementauto_increment_offset

如果第一个设置为x,则您的下一个ID将为(last_id + x)。 如果第二个ID设置为y,则始终使用y(然后每次添加x)。

更可能:您刚删除了表中的所有行并再次插入。这样auto_increment值不会再次设置为1。您必须TRUNCATE tablename再次重置此计数器(如果您确实要删除所有行)。

编辑:

刚看到你的CREATE TABLE声明。如果您确实在选项中使用AUTO_INCREMENT=8440创建了表格,那么当然,在插入8000行后,您的ID将为16000.如果这只是SHOW CREATE TABLE 之后的插入声明,我仍然不知道发生了什么。