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

2023-05-18 09:31 (12ヶ月前) ytyng

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

参考ページ

Current rating: 5

Comments

Archive

2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011