4

我正在使用 MySQL 存储一个 20 位的 ID 号。当我使用以下查询查询数据库时,出现以下错误。

询问:

UPDATE tablename SET columnname = 59641217344615859740;

错误:

Error Code: 1264. Out of range value for column 'columnname' at row 1

表信息:

引擎:InnoDB
行格式:动态
表排序规则:utf8mb4_general_ci

栏目信息:

类型:BIGINT(255)
可空:是
权限:选择、插入、更新、参考

我究竟做错了什么?我的查询有问题吗?也许与表或列设置?大多数出现此错误的其他人只是没有使用 BIGINT 之类的列类型,但我. 非常感谢您的回答。谢谢!

4

3 回答 3

5

你已经达到了MAXIMUM VALUE你使用的数据类型。

MySQL supports the SQL standard integer types INTEGER (or INT) and SMALLINT. 
As an extension to the standard, MySQL also supports the integer types 
TINYINT, MEDIUMINT, and BIGINT. The following table shows the required storage 
and range for each integer type.

类型 存储 最小值 最大值

        (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
于 2017-11-07T02:41:24.387 回答
2

看起来您正在为您的 BIG INT(5.9E+19> MAX 9.2E+18)存储一个很大的值!

如果您查看 MySQL 文档:

https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

您有以下MAX/MIN值:

签名 BIGINT MIN=-9223372036854775808 MAX=9223372036854775807

无符号大整数 MIN=0 MAX= 18446744073709551615

最后但并非最不重要的一点是,我建议阅读以下链接,这些链接MySQL Error Code 1264是通过示例定义和解释的:

https://dev.mysql.com/doc/refman/5.5/en/out-of-range-and-overflow.html

于 2017-11-07T02:34:31.417 回答
2
Your value:          59641217344615859740
Max value of BIGINT:  9223372036854775807

阅读https://dev.mysql.com/doc/refman/5.7/en/integer-types.html

使用 BIGINT(255) 没有区别。该参数只是显示宽度的提示,它不会影响您可以存储在 64 位有符号整数中的值的范围。

于 2017-11-07T02:31:21.337 回答