LoginSignup
2
1

More than 3 years have passed since last update.

[MySQL8.0] InnoDB でinformation_schema.TABLESのAUTO_INCREMENTが古いとき

Last updated at Posted at 2019-07-01

バージョン:MySQL 8.0.16

ALTER TABLEで変更したのに…

ALTER TABLE テーブル名 AUTO_INCREMENT = 値でテーブルのオートインクリメントの値を変更できます。
なのに、SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE table_name = テーブル名で変更前のオートインクリメントの値が取れてしまう…

対策

information_schema.INNODB_TABLESTATSには変更後の値が入っていました。
SELECT AUTOINC FROM information_schema.INNODB_TABLESTATS WHERE NAME = DB名/テーブル名で取得できました。カラム名がAUTOINCな点に注意です。

追記

上記はそもそも権限がなくてINNODB_TABLESTATSの情報にアクセスできない場合も多いです…。

また、それとは別に、同じ件について書いている情報がありました。→参考
MySQL8.0からの仕様のようです。どうやら、information_schema.TABLESのAUTO_INCREMENTはキャッシュを取られているとか。
上記リンク先では、
SET PERSIST information_schema_stats_expiry = 0としてキャッシュを取らないように設定するよう書いてありました。そちらも合わせて参考になれば幸いです。

この記事

初投稿です。お手柔らかにお願いします。

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1