正如我在MySQL中的SET
cust_fax这样:
cust_fax integer(10) NOT NULL,
然后我插入这样的值:
INSERT INTO database values ('3172978990');
然后它说
`错误1264`超出列
的值
我想知道错误在哪里?我的套装?还是其他?
任何答案都将不胜感激!
答案 0 :(得分:74)
值3172978990大于2147483647 - INT
的最大值 - 因此出错。 MySQL整数类型及其范围为listed here。
另请注意,(10)
中的INT(10)
未定义整数的“大小”。它指定列的display width。此信息仅供参考。
要修复错误,请将数据类型更改为VARCHAR
。电话和传真号码应存储为字符串。请参阅this discussion。
答案 1 :(得分:11)
您超过了 int 数据类型的长度。您可以使用 UNSIGNED 属性来支持该值。
SIGNED INT 可以支持 2147483647 , UNSIGNED INT 允许加倍。在此之后,您仍然希望保存数据,而不是使用长度为10的 CHAR 或 VARCHAR
答案 2 :(得分:1)
确保您的AUTO_INCREMENT
不在范围内。在这种情况下,请使用以下命令为其设置一个新值:
ALTER TABLE table_name AUTO_INCREMENT=100 -- Change 100 to the desired number
AUTO_INCREMENT
可以包含一个大于数据类型所允许的最大值的数字。如果您填写了随后清空的表,但AUTO_INCREMENT
保持不变,则可能会发生这种情况,但是可能还有不同的原因。在这种情况下,新条目的ID将超出范围。
如果这是导致问题的原因,则可以通过将AUTO_INCREMENT
设置为比最新行的ID大一个来解决此问题。因此,如果最新行的ID是100,则:
ALTER TABLE table_name AUTO_INCREMENT=101
如果您想查看AUTO_INCREMENT
的当前值,use this command:
SELECT `AUTO_INCREMENT`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND TABLE_NAME = 'TableName';
答案 3 :(得分:0)
使用:
ALTER TABLE `table` CHANGE `cust_fax` `cust_fax` VARCHAR(60) NULL DEFAULT NULL;