场景
- ALTER TABLE {TABLE NAME} AUTO_INCREMENT = 1;
- INSERT INTO {TABLE NAME}({COLUMN})VALUES(1);(这仅是自动增量更新后表中的记录)
- 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
我知道一点,但不是全部。我正在研究这个问题,没有找到令人满意的/解释性的答案。
4条答案
按热度按时间w1jd8yoj1#
INFORMATION_SCHEMA不会更新以反映最近的更改。MySQL 8.0将其更改为每24小时更新一次。
您可以进行以下设置:
这将使INFORMATION_SCHEMA立即更新,但会增加系统开销。
cygmwpex2#
我遇到的问题是信息模式没有立即更新。
为了解决这个问题,我跑了:
因为使用SET GLOBAL对我不起作用。
希望这对其他人有帮助。
hc8w905p3#
我猜你必须设置AUTO_INCREMENT = 1而不是0
3z6pesqy4#
如果您不想因为将
information_schema_stats_expiry
设置为零而降低性能,可以运行ANALYZE TABLE {TABLE NAME}
来只更新您感兴趣的表的记录(参见this question和this answer)。