Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql INT列值被置乱超过10个字符_Mysql_Sql_Database_Drupal_Phpmyadmin - Fatal编程技术网

Mysql INT列值被置乱超过10个字符

Mysql INT列值被置乱超过10个字符,mysql,sql,database,drupal,phpmyadmin,Mysql,Sql,Database,Drupal,Phpmyadmin,我正在创建一个列为INT(20)的表。每当我提交一个大于10个字符的值时,该值就会被置乱。任何小于等于10个字符的值都被正确存储,我不知道为什么。我将长度设置为20,但它似乎忽略了这一点 [字符长度+10] 例如:(1234567890123----变成-->2147483647) [字符长度1234567890) 我想我可能需要以某种方式改变表的结构,但到目前为止一切都不起作用。我非常感谢任何有用的智慧之言,让我的数值大于10正确存储在表中 谢谢 注意:我使用的是MySQL、PhpMyAdmi

我正在创建一个列为INT(20)的表。每当我提交一个大于10个字符的值时,该值就会被置乱。任何小于等于10个字符的值都被正确存储,我不知道为什么。我将长度设置为20,但它似乎忽略了这一点

[字符长度+10]
例如:(1234567890123----变成-->2147483647)

[字符长度1234567890)

我想我可能需要以某种方式改变表的结构,但到目前为止一切都不起作用。我非常感谢任何有用的智慧之言,让我的数值大于10正确存储在表中

谢谢

注意:我使用的是MySQL、PhpMyAdmin、Drupal,它已经溢出了

INT
的最大值为2147483647。应使用
BIGINT
而不是
INT

                 size    min                         max
INT              4       -2147483648                 2147483647
UNSIGNED INT     4       0                           4294967295
BIGINT           8       -9223372036854775808        9223372036854775807
UNSIGNED BIGINT  8       0                           18446744073709551615
请参阅文档:

INT(20)
仅表示可以显示20个数字。如果数字更大,这将作为截止线,或者在指定了
ZEROFILL
时作为焊盘大小

由于可以存储的最大整数是232-1(假设
无符号
),并且超过了该值,因此会得到“加扰”的数字


要解决这个问题,请使用
BIGINT
,它允许您升到264-1,或者使用
FLOAT
以牺牲一些精度来获得大量数字的可能性。

实际上,您应该使用十进制而不是INT或BIGINT。这是SQL中的数据类型,用于保存具有指定精度的数字,这就是你似乎有。

我真的很感谢你的帮助!=)