mysql - 整数列的不合逻辑的 SQL 超出范围值

标签 mysql sql outofrangeexception

我收到一个奇怪的 SQL 错误。我有一个包含以下属性的表客户端:

  • 客户编号
  • 职位
  • 姓名
  • 姓氏
  • 电子邮件
  • 手机
  • 积分
  • 余额

Points 设置为长度为 11 的整数,接受 NULL 值

我尝试使用以下代码插入一个新客户端:

INSERT into client VALUES (154,"Mr","Ted","Jones","td@gmail.com","07951234567",0,0);

我收到以下错误:

1264 - Out of range value for column 'Points' at row 1

为了以防万一,第一行的数据是:

111 Mr  Rob Taylor  rt@hotmail.com  07523363535 438 0

我发现很难理解错误的含义。似乎 points 不会变得如此之大以至于需要成为 BigInt。

CREATE TABLE client ( 
    ClientID int(11) NOT NULL, 
    Title varchar(45) NOT NULL, 
    Name varchar(45) NOT NULL, 
    LastName varchar(45) NOT NULL, 
    Email varchar(45) NOT NULL,
    Cellphone bigint(11) DEFAULT NULL, 
    Points int(11) DEFAULT NULL, 
    Balance decimal(10,0) NOT NULL 
) 
ENGINE=InnoDB DEFAULT CHARSET=utf8; 

最佳答案

在使用insert 时总是指定列。大概你打算:

INSERT into client(ClientId, Title, Name, LastName, email, Cellphone, Points, Balance)
    VALUES (154, 'Mr', 'Ted', 'Jones', 'td@gmail.com', '07951234567', 0, 0);

我的第一个猜测是列在表中的顺序不同——但不要费心弄清楚,只需明确说明您正在使用的列即可。

另一种可能性是手机列被声明为某种数值。如果是这种情况,请修复数据并将列更改为 varchar!

关于mysql - 整数列的不合逻辑的 SQL 超出范围值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41001647/

相关文章:

mySQL - 在添加主键列之前根据需要对表进行排序

php - 尝试获取非对象的属性 'num_rows'

mysql - 尝试将 COUNT 查询合并到现有的 SELECT 查询中

mysql - 在存储过程中使用游标循环行 MySQL

php - 无法识别错误

mysql - 无法解析接近的表名

php - 如何防止 PHP 中的 SQL 注入(inject)?

c++ - 字符串比较中的 std::out_of_range 异常

java - java中的字符串转换抛出数组索引超出范围异常

c# - 在 C# 中初始化锯齿状数组会导致索引超出范围异常