正如我SET
cust_fax在一个表在MySQL中是这样的:
cust_fax integer(10) NOT NULL,
然后我插入这样的价值:
INSERT INTO database values ('3172978990');
但随后说
`误差1264`出的值列
我想知道哪里出错? 我的设置? 或其他?
任何答案将不胜感激!
正如我SET
cust_fax在一个表在MySQL中是这样的:
cust_fax integer(10) NOT NULL,
然后我插入这样的价值:
INSERT INTO database values ('3172978990');
但随后说
`误差1264`出的值列
我想知道哪里出错? 我的设置? 或其他?
任何答案将不胜感激!
值3172978990大于2147483647更大-为对最大值INT
-因此错误。 MySQL的整数类型及其范围列在这里 。
另外请注意, (10)
中INT(10)
没有定义的整数的“大小”。 它指定显示宽度的列的。 此信息只咨询。
为了修正这个错误,改变你的数据类型为VARCHAR
。 电话和传真号码应被存储为字符串。 见这个讨论 。
您还可以更改的数据类型为bigint,它会解决你的问题,这不是一个好的做法,以保持整数作为字符串,除非需要。 :)
ALTER TABLE T_PERSON MODIFY mobile_no BIGINT;
您已超出int数据类型的长度。 您可以使用unsigned属性来支持该值。
符号整型可支持至2147483647, 无符号INT允许比这双。 在这之后,你仍然要保存比使用CHAR或VARCHAR,长度10数据
确保您的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';