【问题标题】:Why am I getting #1264 - Out of range value for column 'Identity_no' at row 1?为什么我收到 #1264 - 第 1 行的“Identity_no”列的值超出范围?
【发布时间】:2022-01-25 13:02:23
【问题描述】:

我创建了一个表并且 Identity_no 是唯一的,但是当我尝试添加一个带有 8 个数字的整数值时出现错误。可能我收到此错误是因为我确定 Identity_no 是唯一的。我该如何解决这个问题 下面是创建表的代码:

CREATE TABLE Members(
    Member_id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
    Identity_no INTEGER NOT NULL UNIQUE,
    Member_Name varchar(80) NOT NULL,
    Member_Surname varchar(80) NOT NULL,
    Member_Phone CHAR(11),
    MemberCityID INTEGER NOT NULL,
    FOREIGN KEY(MemberCityID) REFERENCES Cities(City_id));

添加数据的代码如下:

INSERT INTO Members 
  (Member_id,Identity_no,Member_Name,Member_Surname,Member_Phone,MemberCityID) 
VALUES
  (1,89768434566,"John","W","05379621522",78);

【问题讨论】:

  • 2147483647 < 89768434566
  • INTEGER 列(已签名)的最大编号为 2,147,483,647,但您正在尝试插入更大的编号 89,768,434,566
  • 这能回答你的问题吗? MySQL Error 1264: out of range value for column
  • 感谢您的回答,但在您建议查看的链接中,如果我将 varchar 用于唯一值,我将不胜感激。如果您回答这个问题,我将不胜感激。 @Progman
  • @stck_n 问题不在于UNIQUE 关键字。您要插入的数字对于INTEGER 列来说太大了。根据您要执行的操作,您必须使用不同的值或不同的列类型。

标签: mysql


【解决方案1】:

INTEGER 类型是 32 位有符号整数,这意味着大于 2^31 的数字不能存储在该类型的列中。 请改用BIGINT

CREATE TABLE Members(
Member_id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
Identity_no BIGINT NOT NULL UNIQUE,
Member_Name varchar(80) NOT NULL,
Member_Surname varchar(80) NOT NULL,
Member_Phone CHAR(11),
MemberCityID INTEGER NOT NULL,
FOREIGN KEY(MemberCityID) REFERENCES Cities(City_id));

【讨论】:

    猜你喜欢
    • 2020-04-14
    • 2021-05-06
    • 2016-09-24
    • 2016-09-29
    • 1970-01-01
    • 2018-04-19
    • 2011-05-12
    • 2017-11-15
    • 1970-01-01
    相关资源
    最近更新 更多