Mysql INT列值被置乱超过10个字符
我正在创建一个列为INT(20)的表。每当我提交一个大于10个字符的值时,该值就会被置乱。任何小于等于10个字符的值都被正确存储,我不知道为什么。我将长度设置为20,但它似乎忽略了这一点 [字符长度+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
例如:(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中的数据类型,用于保存具有指定精度的数字,这就是你似乎有。我真的很感谢你的帮助!=)