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

Posted

技术标签:

【中文标题】MySQL 错误代码:1264。第 1 行的列 \'columnname\' 的值超出范围【英文标题】:MySQL Error Code: 1264. Out of range value for column 'columnname' at row 1MySQL 错误代码:1264。第 1 行的列 'columnname' 的值超出范围 【发布时间】:2018-04-19 07:54:16 【问题描述】:

我正在使用 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 等列类型,但我 am。非常感谢您的回答。谢谢!

【问题讨论】:

【参考方案1】:

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

【讨论】:

哦,好吧,我不知道......我想当我需要用它进行数学运算时,我必须使用 VARCHAR 并使用 parseInt() 哈哈【参考方案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 值:

签名大整数 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

【讨论】:

哦,好吧,我不知道......我想当我需要用它进行数学运算时,我必须使用 VARCHAR 并使用 parseInt() 哈哈【参考方案3】:
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 位有符号整数中的值的范围。

【讨论】:

哦,好吧,我不知道......我想当我需要用它进行数学运算时,我必须使用 VARCHAR 并使用 parseInt() 哈哈

以上是关于MySQL 错误代码:1264。第 1 行的列 'columnname' 的值超出范围的主要内容,如果未能解决你的问题,请参考以下文章

为啥我收到错误 1264:第 1 行的“ping”列的值超出范围?

csv导入错误的Mysql排序规则/类型第1362行的CSV输入中的列计数无效

错误代码:1366。不正确的整数值:第 2 行的列“ReportsTo”的“NULL”

不正确的整数值:''对于第1行的列'id'

1265 数据在几个值后截断第 1 行的列

第 1 行的 CSV 输入中的列数无效错误