masalibの日記

システム開発、運用と猫の写真ブログです

MySQL5.7とMySQL8.0で AUTO_INCREMENT の挙動が変わっている件

経緯

今まで、大量のテストデータをクリアする時に TRUNCATE TABLEをする事でAUTO_INCREMENTの値も初期化していた

MySQL5.7の場合

use <データベース名>;
TRUNCATE TABLE <テーブル名>;
SHOW TABLE STATUS WHERE name = '<テーブル名>';

でAuto_incrementの値が変わっている事を確認していた もし変更されなかったら下記のSQLで初期化していた

use <データベース名>;
alter table <テーブル名> auto_increment = 1;

MySQL8.0の場合

use <データベース名>;
TRUNCATE TABLE <テーブル名>;
SHOW TABLE STATUS WHERE name = '<テーブル名>';
alter table <テーブル名> auto_increment = 1;

を実行してもAuto_incrementの値は変更されない

ただ実際にinsertすると「1」から入る。 意味がわからない\(^o^)/

dropして、creteしたら変わった

use <データベース名>;
drop table <テーブル名>;
crete table <テーブル名>(…
SHOW TABLE STATUS WHERE name = '<テーブル名>';

エクスポート機能があるから簡単につくれるけど、面倒くさいな~

ちょっと別件

色々、調べてみて勉強したこと

サーバーを再起動しても AUTO_INCREMENT の値が リセットされなくなりました

https://www.s-style.co.jp/blog/2018/08/2284/ https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

これは、いいことだね