質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

2回答

6395閲覧

MySQLでのAUTO_INCREMENTで正常に+1されない不具合の原因

yuki84web

総合スコア1857

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2017/02/08 14:25

編集2017/02/10 01:42

プログラム側は特に変更していなかったものの、DB処理(通常のINSERT)時にエラー(MySQLエラーコード1602)になったので調べたところ、
UNIQUEのキーで重複する値を登録しようとして起こっていたことが分かりました。
しかし、該当のフィールドは10桁整数型のAUTO_INCREMENT属性であり、プログラム側から指定する部分でもありません。

DBを確認してみると、該当フィールドに4XXXX..という以上に大きい値が記録されたレコードが追加されていました。
(unsigned int 最大値に近いような値だったと思います)
エラー文で解決方法を調べ、問題のレコードを削除してALTER TABLEでAUTO_INCREMENTを再セットし直した後、問題は解消しました。

そのレコードが登録されるまでは300程度の値で問題無く+1ずつ採番されていたのですが、
何故突然異常が起きたのか全く分からなないのですが、どのような原因が考えられますでしょうか?

MySQLバージョン:5.5.42

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

原因として予想されるものは

  • 誰かが直接DBを操作した
  • AUTO_INCREMENTすべきカラムの場所に間違えて-1を入れてINSERT、またはUPDATEした

とかでしょうか。

###追記
試してみましたがAUTO_INCREMENTのカラムをUPDATEしてもAUTO_INCREMENTの数値は上がらないみたいですね。可能性があるとしたらINSERT時に-1をUNSIGNED INTとして渡した可能性でしょうか。

投稿2017/02/09 00:34

編集2017/02/09 00:39
masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki84web

2017/02/10 01:45

ありがとうございます。 対策以降、問題は特に発生していません。 現象を確実に発生させるトリガーが分からないので一旦様子見することにします。
guest

0

バグのないソフトはありません。
MySQLの正確なバージョンは?
現象を再現できる最小限のコードを提示できますか?

AUTO_INCREMENTに頼らず、自前でINCREMENTするように変更することも考えられます。

投稿2017/02/09 00:09

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki84web

2017/02/10 01:44

ありがとうございます。 バージョンは5.5.42でした。 ソースコードの公開は出来ませんが、自前でのインクリメントは今後も頻発する場合に検討します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問