Mysql 整数列的SQL值超出范围不合理

Mysql 整数列的SQL值超出范围不合理,mysql,sql,outofrangeexception,Mysql,Sql,Outofrangeexception,我得到一个奇怪的SQL错误。我有一个表客户端,它包含以下属性: 客户 头衔 名字 姓氏 电子邮件 手机 要点 平衡 点设置为长度为11的整数,接受空值 我尝试使用以下代码插入新客户端: INSERT into client VALUES (154,"Mr","Ted","Jones","td@gmail.com","07951234567",0,0); 我得到以下错误: 1264-第1行“点”列的值超出范围 如果需要,第一行中的数据为: 111 Mr Rob Taylor rt@hot

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

  • 客户
  • 头衔
  • 名字
  • 姓氏
  • 电子邮件
  • 手机
  • 要点
  • 平衡
点设置为长度为11的整数,接受空值

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

INSERT into client VALUES (154,"Mr","Ted","Jones","td@gmail.com","07951234567",0,0);
我得到以下错误:

1264-第1行“点”列的值超出范围

如果需要,第一行中的数据为:

111 Mr  Rob Taylor  rt@hotmail.com  07523363535 438 0
我发现很难理解错误是怎么回事。这并不是说点会变得如此之大以至于需要变成一个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

使用
insert
时始终指定列。你大概打算:

INSERT into client(ClientId, Title, Name, LastName, email, Cellphone, Points, Balance)
    VALUES (154, 'Mr', 'Ted', 'Jones', 'td@gmail.com', '07951234567', 0, 0);
我的第一个猜测是,列在表中的顺序不同——但不要费心去弄清楚,只需明确说明您正在使用的列


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

您应该始终为insert语句指定列。为我们提供“show create table client”的输出,以便我们可以查看列结构。或者您使用的create table语句。我怀疑您对Points列有某种约束,它不允许0值。检查是否存在可以拒绝此值的约束和/或触发器。我深表歉意。这是表的结构:创建表
client
ClientID
int(11)不为空,
Title
varchar(45)不为空,
Name
varchar(45)不为空,
LastName
varchar(45)不为空,
Email
varchar(45)不为空,
phone
bigint(11)默认为空,
int(11)默认为空,
余额
decimal(10,0)非空)引擎=InnoDB默认字符集=utf8;这是什么数据库管理系统?这种情况变化很大。您应该始终为insert语句指定您的列。为我们提供“show create table client”的输出,以便我们可以查看列结构。或者您使用的create table语句。我怀疑您对Points列有某种约束,它不允许0值。检查是否存在可以拒绝此值的约束和/或触发器。我深表歉意。这是表的结构:创建表
client
ClientID
int(11)不为空,
Title
varchar(45)不为空,
Name
varchar(45)不为空,
LastName
varchar(45)不为空,
Email
varchar(45)不为空,
phone
bigint(11)默认为空,
int(11)默认为空,
余额
decimal(10,0)非空)引擎=InnoDB默认字符集=utf8;这是什么数据库管理系统?这类问题差异很大。我在发帖之前尝试过,但还是遇到了同样的问题。真是莫名其妙!看起来像是
mobile bigint(11)
,但是为什么说错误在
点上呢
?你的值“07951234567”会溢出一个int(点),但不会溢出一个bigint(mobile)。。。这和你的专栏顺序有关。你完全正确。PHPMyAdmin使您能够拖动列并更改顺序,这是我上周出于某种原因所做的。但是,它必须将原始订单存储在某个地方,这就是我出现此错误的原因。我把桌子掉在地上,从头开始做。然后我像以前一样运行了SQL插入代码,现在它可以工作了!非常感谢您的帮助。我在发布问题之前尝试过这个,但仍然遇到同样的问题。真是莫名其妙!看起来像是
mobile bigint(11)
,但是为什么说错误在
点上呢
?你的值“07951234567”会溢出一个int(点),但不会溢出一个bigint(mobile)。。。这和你的专栏顺序有关。你完全正确。PHPMyAdmin使您能够拖动列并更改顺序,这是我上周出于某种原因所做的。但是,它必须将原始订单存储在某个地方,这就是我出现此错误的原因。我把桌子掉在地上,从头开始做。然后我像以前一样运行了SQL插入代码,现在它可以工作了!非常感谢你的帮助。