MySQL 错误代码:1264。第 1 行的 'columnname' 列值超出范围
MySQL Error Code: 1264. Out of range value for column 'columnname' at row 1
我正在使用 MySQL 来存储一个 20 位的身份证号码。当我使用以下查询查询数据库时,出现以下错误。
查询:
UPDATE tablename SET columnname = 59641217344615859740;
错误:
Error Code: 1264. Out of range value for column 'columnname' at row 1
Table 信息:
Engine: InnoDB
Row Format: Dynamic
Table Collation: utf8mb4_general_ci
列信息:
Type: BIGINT(255)
Nullable: Yes
Privileges: Select, Insert, Update, References
我做错了什么?我的查询有问题吗?也许使用 table 或列设置?大多数出现此错误的其他人只是没有使用 BIGINT 等列类型,但我 am。非常感谢您的回答。谢谢!
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 位有符号整数中的值的范围。
您似乎正在为 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
最后但同样重要的是,我建议阅读以下 link 中 MySQL Error Code 1264
的定义和示例说明:
https://dev.mysql.com/doc/refman/5.5/en/out-of-range-and-overflow.html
您已达到所用数据类型的 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
我正在使用 MySQL 来存储一个 20 位的身份证号码。当我使用以下查询查询数据库时,出现以下错误。
查询:
UPDATE tablename SET columnname = 59641217344615859740;
错误:
Error Code: 1264. Out of range value for column 'columnname' at row 1
Table 信息:
Engine: InnoDB
Row Format: Dynamic
Table Collation: utf8mb4_general_ci
列信息:
Type: BIGINT(255)
Nullable: Yes
Privileges: Select, Insert, Update, References
我做错了什么?我的查询有问题吗?也许使用 table 或列设置?大多数出现此错误的其他人只是没有使用 BIGINT 等列类型,但我 am。非常感谢您的回答。谢谢!
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 位有符号整数中的值的范围。
您似乎正在为 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
最后但同样重要的是,我建议阅读以下 link 中 MySQL Error Code 1264
的定义和示例说明:
https://dev.mysql.com/doc/refman/5.5/en/out-of-range-and-overflow.html
您已达到所用数据类型的 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