0

MySQLテーブルにフィールドを設定すると、INTそこに格納する数値からすべてのゼロが削除されます。
たとえば、この 100007431431552 のような ID がある場合、最終的には 17431431552 として保存されます
。フィールド オプションのINT長さは 32 です。では、何が問題なのでしょうか?

助言がありますか?ありがとうございました。

4

3 に答える 3

1

100007431431552は には大きすぎますINT

strict モードで実行していた場合、エラー ( Data truncation: Out of range value for column 'id') が発生します。

残念ながら、MySQLのデフォルトの動作は、エラーメッセージを回避し、代わりに何か他のことをしようとすることです-あなたに言わずにデータを失うという犠牲を払って(それ17431431552があなたの例に保存されている理由です)。

この種の値には、次を使用する必要がありますbigint

SQLFiddle: http://sqlfiddle.com/#!2/19505/1

于 2013-03-30T10:39:17.513 に答える
1

MySQL のマニュアルによると、INT 型の最大値は 2147483647 (符号あり) と 4294967295 (符号なし) です。BIGINT 型の最大値は、9223372036854775807 (符号付き) および 18446744073709551615 (符号なし) です。したがって、BIGINT 列タイプを使用する必要があります。

于 2013-03-30T10:41:59.097 に答える
1

mysql.comから

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

于 2013-03-30T10:42:02.380 に答える