问题 - TABLE_SCHEMA 中的 AUTO_INCREMENT 值未更新

问题描述

场景

  1. ALTER TABLE {TABLE NAME} AUTO_INCREMENT = 1;

  2. INSERT INTO {TABLE NAME} ({COLUMN}) VALUES (1); (这只是自动增量更新后表中的记录)

  3. 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 立即更新,但会增加系统开销。