概要
MySQL8のDBテーブルのAUTO_INCREMENTをある数にするコマンドを打っても、
なぜか反映されない...というときのために、備忘も込めて紹介。
原因
普通に以下のSQLコマンドでいけると思って、実行してみる。
ALTER TABLE sample_table AUTO_INCREMENT = 3;
しかし、現在のAUTO_INCREMENT値を確認すると..
SHOW TABLE STATUS LIKE 'sample_table';
15のままになっている。3にしたはずなのに反映されていない。。
原因は、SHOW TABLE STATUSは内部的にinformation_schemaを参照しており、
この統計情報がキャッシュされた古い値を返していたことが原因でした。
解決方法
information_schemaはキャッシュされた値を返すことがあるため
ANALYZE TABLEで統計情報を更新すると正しい値が反映されます。
以下のSQLでOK。
ANALYZE TABLE sample_table;
すると、AUTO_INCREMENTが3になっていることを確認できました。
今後同様のことがあれば、AUTO_INCREMENT変更後にANALYZE TABLEを実行すると確実ですね。