我们在 MySQL中使用具有自动递增主键的内存表。
重新启动 MySQL 后,内存表按预期清空。
但是,我们希望保留自动增量值,以便下一个插入的行的 ID 位于上次会话中使用的 ID 之后。
那可能吗?
我们在 MySQL中使用具有自动递增主键的内存表。
重新启动 MySQL 后,内存表按预期清空。
但是,我们希望保留自动增量值,以便下一个插入的行的 ID 位于上次会话中使用的 ID 之后。
那可能吗?
重新启动后,您可以使用此语句更改用于AUTO_INCREMENT
列的下一个值。
ALTER TABLE mytable AUTO_INCREMENT = new_value;
语法类似,但由于CREATE TABLE
内存表是在重新启动后重新创建的,所以它对你没有多大用处。
如果此调用的时间很重要,我建议将其添加到启动脚本中;我不会知道任何其他方式。
我们不能使用该ALTER TABLE
语句,因为需要一个函数来计算初始自动增量。
解决方案是:
my.cnf
文件已更改,在[mysqld]
我们添加的标头之后init-file = [file_path]
该文件将使用虚拟值在表上执行插入操作(例如INSERT INTO mytable(id) VALUES (UNIX_TIMESTAMP())
。在此之后,如果需要,可以删除该行。