# 问题描述
今天无意中发现原本能正常增加的 id 突然不变了,查看 sql 发现是取的对应表的自增 id。虽然存到表中的新数据自增 id 变化了,但返回的 id 总是不变。经过查询发现表的自增 id 是存在 information_schema 库中的 tables 表中。tables 表中存储了所有表的对应信息,其中有个 auto_increment 字段存储的就是对应表的下一个自增值。但是 mysql 在新版本中修改了此值的更新规则,老版本中是实时更新,新版本修改为 24 小时更新一次。为了不修改原代码中的逻辑,只能通过修改 mysql 配置使项目正常工作了。
# 解决办法
mysql数据库auto_increment自增长不变的处理方法 | |
修改/etc/mysql/mysql.conf.d/mysqld.cnf | |
增加一行information_schema_stats_expiry = 0 | |
保存后重启mysql | |
sudo systemctl restart mysql.service | |
查询是否生效 | |
show global variables like 'information_schema_stats_expiry'; | |
show session variables like 'information_schema_stats_expiry'; |