私はこのコラムを持っています
INT(10) ZEROFILL NOT NULL DEFAULT '0000000000',
しかし、のようなものを挿入すると9100000010
、4294967295
そこに10桁の数字が許されるべきでしたね?
これを正しく行う方法は?
MySQLのINTフィールドで可能な最大値はです。2147483647
値9100000010
はそれよりも大きくなります。4294967295
そのため、符号なし整数の最大値がオーバーフローしています。
INT 4 -2147483648 2147483647
BIGINT
次の範囲のより大きな数を格納する場合に使用します。
BIGINT 8 -9223372036854775808 9223372036854775807
Intには最大値の範囲があります:
INT 4 -2147483648 2147483647
0 4294967295 (unsigned )
したがって、オーバーフローが原因で最大値を取得しています。代わりにbigintを使用してください。これは8バイトで、問題ありません。
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html#integer-types
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615
MySQLでは、INT(10)は、値が10文字の値に制限されていることを意味するものではありません。これは、MySQLがこれらの値を返すときにスペース/ゼロで埋めようとすることを意味するだけです。
INT(10)、INT(5)、またはその他のINT(n)を含む符号付きINTの数値範囲は、-2,147,483,648 ... 2,147,483,647で、最大で10桁です。
そこに10桁の数字が許されるべきでしたね?
いいえ、mySQLのINTおよび整数型のサイズは、フィールドにZEROFILLが指定されている場合の表示幅を設定します。
たとえば、挿入した値が123456の場合、クエリを実行すると0000123456と表示されます。これは表示幅であり、値には影響しません。
したがって、値の範囲は、表示幅ではなく、データ型自体によって決定されます。より大きな値を格納するには、データ型をBIGINTなどの適切なものに変更する必要があります。
mySQLリファレンスから:
INT : A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.
intの最大値に達しました。mysqlのintのint最大値の範囲は4294967295(符号なし)です。したがって、BIGINTを使用する必要があります。これについての詳細はここで入手できます: Mysql数値タイプ
お役に立てれば
敬具
私はあなたがintmax値を取得すると信じています。INT(10)は、文字数を制限するためではなく、数字を埋めるためのものです。
MySQLは、これらの値を返すときに、これらの値をスペース/ゼロで埋めようとします。