回答編集履歴

1

追記

2018/11/12 01:43

投稿

sazi
sazi

スコア25195

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