MySQL错误代码:1264。超出第1行列'columnname'的范围值

时间:2017-11-07 02:27:28

标签: mysql database mysql-workbench workbench mysql-error-1264

我正在使用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这样的列类型,但我。非常感谢答案。谢谢!

3 个答案:

答案 0 :(得分:3)

您已达到所用数据类型的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

答案 1 :(得分:2)

Your value:          59641217344615859740
Max value of BIGINT:  9223372036854775807

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

使用BIGINT(255)没有区别。 The argument is only a hint for display width,它不会影响您可以存储在64位有符号整数中的值范围。

答案 2 :(得分:1)

您的BIG INT 列(5.9E + 19> MAX 9.2E + 18)看起来好像存储了值?

如果你看一下MySQL文档:

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

您有以下 MAX / MIN 值:

  

SIGNED BIGINT MIN = -9223372036854775808 MAX = 9223372036854775807

     

UNSIGNED BIGINT MIN = 0 MAX = 18446744073709551615

最后但同样重要的是,我建议您阅读以下链接,MySQL Error Code 1264已定义并通过示例进行解释:

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