MySQL で、AUTO_INCREMENT の値を設定して取得する

2023-05-18 00:31 (2 years ago)
Cached Numbers, Stale Truth
この記事をテーマにした曲を再生

MySQL で、テーブルの auto_increment を設定したり取得したりする時、 MySQL8以降は、information_schema がキャッシュされるので、連続で AUTO_INCREMENT を取得すると、更新されない値が取得できることがある。 その場合の対策方法

設定

ALTER TABLE my_table_name AUTO_INCREMENT = 1

取得

SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE TABLE_NAME = 'my_table_name'

ただし、キャッシュされている値が取得されることがある。 以下のどちらかの方法で対策できる。

対策A: セッション内で information_schema のキャッシュを無効化する

SET information_schema_stats_expiry = 0

対策B: テーブルの information_schema のキャッシュを強制的に更新する

ANALYZE TABLE my_table_name

参考ページ

現在の評価: 5.0 (2)
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。

アーカイブ