1. ホーム
  2. database

データベースで整数カラムの自動インクリメントがmax_valueに達した場合、何が起こりますか?

2023-10-26 03:02:01

質問

私はデータベースアプリケーションを実装しており、データベースとしてJavaDBとMySQLの両方を使用する予定です。私のテーブルには、型として整数を持つIDカラムがあり、私はその値に対してデータベースのauto_increment-functionを使用します。

しかし、20億(または40億)以上の投稿があり、整数では足りなくなったらどうなるのでしょうか?整数がオーバーフローして続行されるのでしょうか、それとも処理可能な例外がスローされるのでしょうか?

確かにデータ型をlongに変更することはできますが、それが必要なときをどのように確認すればよいのでしょうか?また、IDカラムのデータ型としてlongを使用する場合、last_inserted_id()関数を取得する際に問題があると思います。

どのように解決するのですか?

ジム・マーティンのコメント §3.6.9. "AUTO_INCREMENTの使用" からのコメントです。

念のため申し上げますが、AUTO_INCREMENT フィールドは /DOES NOT WRAP/ です。フィールドサイズの制限に達すると、INSERT はエラーを発生させます。(Jeremy Coleによる)

MySQL 5.1.45 での簡単なテストでは、次のようなエラーが発生します。

エラー 1467 (hy000)。ストレージ エンジンから自動インクリメントの値を読み取ることに失敗しました。

挿入時にそのエラーをテストして、適切な対処をすることができます。