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
。