mysql TABLE_SCHEMA中的- AUTO_INCREMENT值未更新时出现问题

camsedfj  于 2023-03-28  发布在  Mysql
关注(0)|答案(4)|浏览(170)

场景

  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 = {DATABASE NAME} AND TABLE_NAME = {TABLE NAME};
    最后一次选择auto_increment是在执行alter table之前返回旧值在步骤1),我不明白为什么和热修复它或可能alter table在步骤1)不是重置auto_increment的正确方法。
    THX
    我知道一点,但不是全部。我正在研究这个问题,没有找到令人满意的/解释性的答案。
w1jd8yoj

w1jd8yoj1#

INFORMATION_SCHEMA不会更新以反映最近的更改。MySQL 8.0将其更改为每24小时更新一次。
您可以进行以下设置:

SET GLOBAL information_schema_stats_expiry=0;

这将使INFORMATION_SCHEMA立即更新,但会增加系统开销。

cygmwpex

cygmwpex2#

我遇到的问题是信息模式没有立即更新。
为了解决这个问题,我跑了:

SET PERSIST information_schema_stats_expiry = 0;

因为使用SET GLOBAL对我不起作用。
希望这对其他人有帮助。

hc8w905p

hc8w905p3#

我猜你必须设置AUTO_INCREMENT = 1而不是0

3z6pesqy

3z6pesqy4#

如果您不想因为将information_schema_stats_expiry设置为零而降低性能,可以运行ANALYZE TABLE {TABLE NAME}来只更新您感兴趣的表的记录(参见this questionthis answer)。

相关问题