0

我们在 MySQL中使用具有自动递增主键的内存表。

重新启动 MySQL 后,内存表按预期清空。

但是,我们希望保留自动增量值,以便下一个插入的行的 ID 位于上次会话中使用的 ID 之后。

那可能吗?

4

2 回答 2

1

重新启动后,您可以使用此语句更改用于AUTO_INCREMENT列的下一个值。

ALTER TABLE mytable AUTO_INCREMENT = new_value;

语法类似,但由于CREATE TABLE内存表是在重新启动后重新创建的,所以它对你没有多大用处。

如果此调用的时间很重要,我建议将其添加到启动脚本中;我不会知道任何其他方式。

于 2012-10-24T11:58:20.627 回答
0

我们不能使用该ALTER TABLE语句,因为需要一个函数来计算初始自动增量。

解决方案是:

  1. my.cnf文件已更改,在[mysqld]我们添加的标头之后init-file = [file_path]

  2. 该文件将使用虚拟值在表上执行插入操作(例如INSERT INTO mytable(id) VALUES (UNIX_TIMESTAMP())。在此之后,如果需要,可以删除该行。

于 2012-10-29T14:00:44.613 回答