【问题标题】:MySQL Auto Increment?MySQL自动增量?
【发布时间】:2013-08-24 12:16:41
【问题描述】:

我有 2 个不同的 MySQL 服务器。 一个是 5.6.12,另一个是 5.5.25a。

在 5.5 版本的服务器上我可以这样做:

ALTER TABLE AUTO_INCREMENT = 100;
ALTER TABLE AUTO_INCREMENT = 50;

5.6 版本只允许我将 auto_increment 更改为比 auto_increment 更高的值。

当然,我不会尝试将值更改为比具有最大值的记录更低的值。

两台 MySQL 服务器都是 InnoDB

我需要在最新版本中使用那个commen

有什么线索吗?

【问题讨论】:

  • 仔细检查该列中是否没有大于或等于 50 的值。 MySQL 处理 AUTO_INCREMENT 列的方式在 5.5 和 5.6 之间没有变化。

标签: mysql auto-increment


【解决方案1】:

此查询适用于 mysql 5.6.12 和 5.5.25:

ALTER TABLE  `table_name` AUTO_INCREMENT =10

根据mysql manual

您不能将计数器重置为小于或等于任何 已经被使用了。对于 MyISAM,如果值小于或等于 到当前在 AUTO_INCREMENT 列中的最大值,该值 重置为当前最大值加一。 对于 InnoDB,如果值为 小于列中的当前最大值,不会发生错误并且 当前序列值没有改变。

如果表没有记录,可以使用TRUNCATE

TRUNCATE TABLE table_name

来自mysql manual

任何 AUTO_INCREMENT 值都会重置为其起始值。这是真实的 即使对于 MyISAM 和 InnoDB,它们通常不重用序列 价值观。


更新:mysql5.6.12 似乎有一些错误:http://bugs.mysql.com/bug.php?id=69882

【讨论】:

  • 没错,这就是我正在使用的。例如,对于一个空表,我这样做: ALTER TABLE table AUTO_INCREMENT = 100;它将自动增量设置为 100,这非常有效。问题是如果我想更改为较低的值,表仍然为空 ALTER TABLE table AUTO_INCREMENT = 5;它根本不起作用。这就是我遇到的问题。
  • 是的,但是我尝试设置的值低于当前的自动增量值并且高于列中的当前最大值......并且它不起作用。这是新的,因为在旧版本的 MySQL 中它可以工作......¿?
  • 是的,但是当表中有 FK 时我无法截断。我可以做一些技巧,比如 SET FOREIGN_KEY_CHECKS=0,但 IU 想知道的是为什么不再工作了......
  • 感谢我看到了这个错误,希望他们能修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 2011-12-05
相关资源
最近更新 更多