问题描述
场景
-
ALTER TABLE {TABLE NAME} AUTO_INCREMENT = 1;
-
INSERT INTO {TABLE NAME} ({COLUMN}) VALUES (1); (这只是自动增量更新后表中的记录)
-
SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = {数据库名称} AND TABLE_NAME = {TABLE NAME};
最后一个 select auto_increment 在执行步骤 1) 中的 alter table 之前返回旧值,我不明白为什么和热修复它,或者可能在步骤 1) 中的 alter table 不是重置 auto_increment 的正确方法。>
THX
附注。我知道一点,但不是全部。我正在研究这个问题,但没有找到令人满意/解释性的答案。
解决方法
我猜你必须设置 AUTO_INCREMENT = 1 而不是 0
,INFORMATION_SCHEMA 不会更新以反映最近的更改。 MySQL 8.0 将其更改为每 24 小时仅更新一次。
您可以设置:
SET GLOBAL information_schema_stats_expiry=0;
这将使 INFORMATION_SCHEMA 立即更新,但会增加系统开销。