長さが不十分なカラムに値を挿入すると、予期しない結果が生じる可能性があります。この場合、19 桁の数値が長さ 10 の整数列に挿入されます。
切り捨てが発生しない理由
通常はオーバーフローが発生しますが、 MySQL 整数カラムの場合、余分な桁が切り捨てられると、オーバーフローが発生し、カラム タイプの最大許容値に変換されます。この動作は MySQL ドキュメントに記載されています。
結果の計算
結果の数値 2147483647 は、32 ビット符号付き整数の最大値です。 MySQL のデフォルトのストレージ エンジンである InnoDB の整数の内部表現。
Formula
すべてのケースで結果の数値を計算する明示的な式はありませんが、整数のオーバーフローを理解する行動は結果を予測するのに役立ちます。この特定のケースでは、オーバーフロー値は次のように計算できます。
Result = (Value to Insert) % (2^32)
この式を挿入された値 (715988985123857) に適用すると、2147483647 が得られ、データベースで観察された結果と一致します。
影響
データの破損を防ぐには、整数のオーバーフローを理解することが重要です。この例では、大きな値を正確に保存できず、データの不正表示につながりました。設計者と開発者は、データの整合性を確保するために、列に必要なサイズと精度を慎重に検討する必要があります。
以上がMySQL 整数オーバーフローが発生すると、切り捨てではなく最大値が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。