MySQLテーブルにフィールドを設定すると、INTそこに格納する数値からすべてのゼロが削除されます。
たとえば、この 100007431431552 のような ID がある場合、最終的には 17431431552 として保存されます
。フィールド オプションのINT長さは 32 です。では、何が問題なのでしょうか?
助言がありますか?ありがとうございました。
MySQLテーブルにフィールドを設定すると、INTそこに格納する数値からすべてのゼロが削除されます。
たとえば、この 100007431431552 のような ID がある場合、最終的には 17431431552 として保存されます
。フィールド オプションのINT長さは 32 です。では、何が問題なのでしょうか?
助言がありますか?ありがとうございました。
100007431431552は には大きすぎますINT。
strict モードで実行していた場合、エラー ( Data truncation: Out of range value for column 'id') が発生します。
残念ながら、MySQLのデフォルトの動作は、エラーメッセージを回避し、代わりに何か他のことをしようとすることです-あなたに言わずにデータを失うという犠牲を払って(それ17431431552があなたの例に保存されている理由です)。
この種の値には、次を使用する必要がありますbigint。
SQLFiddle: http://sqlfiddle.com/#!2/19505/1
MySQL のマニュアルによると、INT 型の最大値は 2147483647 (符号あり) と 4294967295 (符号なし) です。BIGINT 型の最大値は、9223372036854775807 (符号付き) および 18446744073709551615 (符号なし) です。したがって、BIGINT 列タイプを使用する必要があります。
Type Storage Minimum Value Maximum Value
(Bytes) (Signed/Unsigned) Signed/Unsigned)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615
ではそれほど多くの数をストローすることはできませんINT TYPE。