回答編集履歴

1

追記

2018/11/12 01:43

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,2 +1,17 @@
1
1
  AUTO_INCREMENTが最大値+1なので、最後の番号を削除すれば、当然最大値は変わります。
2
- 最大値の番号でないものを削除しても最大値は変化しません。
2
+ 最大値の番号でないものを削除しても最大値は変化しません。
3
+
4
+ 再起動が絡みますが、MYSQLの仕様です。
5
+ [14.6.5.1 従来の InnoDB の自動インクリメントロック](https://dev.mysql.com/doc/refman/5.6/ja/innodb-auto-increment-traditional.html)
6
+
7
+ [MySQL サーバーを再起動するとAUTO_INCREMENT の値が戻る](http://sairoutine.hatenablog.com/entry/2016/04/24/013521)
8
+ > AUTO_INCREMENTした値が一意であることを見越して、
9
+ > 他のテーブルの外部キーにしてたりすると、整合性が取れなくなってしまう。
10
+ >
11
+ > 対策としては
12
+ > ・外部キー制約入れる
13
+ > ・AUTO_INCREMENTに頼らず、別に採番テーブルを用意する
14
+ > ・論理削除してレコードを delete しない(!)
15
+
16
+ 8.0だと解消しているようです。
17
+ [MySQL 8.0でInnoDBのAUTO_INCREMENT問題解消を確認してみる](https://qiita.com/hmatsu47/items/4429171c1bbaba564774)