MySQL错误1264:超出范围值的列(MySQL Error 1264: out of range

2019-07-18 03:26发布

正如我SET cust_fax在一个表在MySQL中是这样的:

cust_fax integer(10) NOT NULL,

然后我插入这样的价值:

INSERT INTO database values ('3172978990');

但随后说

`误差1264`出的值列

我想知道哪里出错? 我的设置? 或其他?

任何答案将不胜感激!

Answer 1:

值3172978990大于2147483647更大-为对最大值INT -因此错误。 MySQL的整数类型及其范围列在这里 。

另外请注意, (10)INT(10)没有定义的整数的“大小”。 它指定显示宽度的列的。 此信息只咨询。

为了修正这个错误,改变你的数据类型为VARCHAR 。 电话和传真号码应被存储为字符串。 见这个讨论 。



Answer 2:

您还可以更改的数据类型为bigint,它会解决你的问题,这不是一个好的做法,以保持整数作为字符串,除非需要。 :)

ALTER TABLE T_PERSON MODIFY mobile_no BIGINT;


Answer 3:

您已超出int数据类型的长度。 您可以使用unsigned属性来支持该值。

符号整型可支持至2147483647, 无符号INT允许比这双。 在这之后,你仍然要保存比使用CHARVARCHAR,长度10数据



Answer 4:

TL;博士

确保您的AUTO_INCREMENT不超出范围。 在这种情况下,为其设置一个新值:

ALTER TABLE table_name AUTO_INCREMENT=100 -- Change 100 to the desired number

说明

AUTO_INCREMENT可以包含多个比由数据类型允许的最大值更大。 这可能发生,如果你充满了你之后清空一个表,但AUTO_INCREMENT保持不变,但可能有不同的原因也是如此。 在这种情况下,一个新条目的ID是超出范围。

如果这是你的问题的原因,你可以通过设置修复AUTO_INCREMENT一个比最新的行的ID大。 所以,如果您的最新行的编号为100,则:

ALTER TABLE table_name AUTO_INCREMENT=101

如果您想查询AUTO_INCREMENT的电流值, 使用这个命令 :

SELECT `AUTO_INCREMENT`
FROM  INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND   TABLE_NAME   = 'TableName';


文章来源: MySQL Error 1264: out of range value for column