2016-12-06 1 views
0

이상한 SQL 오류가 발생합니다.비논리적 SQL이 정수 열의 범위를 벗어남

  • 된 ClientID
  • 제목
  • 이름
  • 이메일
  • 핸드폰
  • 포인트
  • 밸런스
: 나는 다음과 같은 속성을 포함하는 테이블 클라이언트가

INSERT into client VALUES (154,"Mr","Ted","Jones","[email protected]","07951234567",0,0); 

그리고 다음과 같은 오류 얻을 :

을 5,

포인트는

나는 다음과 같은 코드를 사용하여 새 클라이언트를 삽입하려고를 받아 NULL 값을 길이 11의 정수로 설정 이 필요한 이런 경우에

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

, 첫 번째 행의 데이터는 다음과 같습니다

111 Mr Rob Taylor [email protected] 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; 
+1

항상 삽입 문에 대한 열을 지정해야합니다. – Kritner

+0

열 구조를 볼 수 있도록 "show create table client"의 출력을 제공하십시오. 또는 사용한 테이블 문. –

+0

0 값을 허용하지 않는 Points 열에 어떤 종류의 제약이 있다고 생각됩니다. 이 값을 거부 할 수있는 제한 및/또는 트리거가 없는지 확인하십시오. – arturro

답변

3

insert을 사용할 때 항상 열을 지정하십시오. 아마도 당신이 의도 :

INSERT into client(ClientId, Title, Name, LastName, email, Cellphone, Points, Balance) 
    VALUES (154, 'Mr', 'Ted', 'Jones', '[email protected]', '07951234567', 0, 0); 

내 첫번째 추측은 열이 테이블의 다른 순서 있다는 것입니다 -하지만를 파악 귀찮게하지 않습니다, 당신이 사용하는 열에 대한 명시합니다.

또 다른 가능성은 휴대 전화 열이 일종의 숫자 값으로 선언된다는 것입니다. 이 경우 데이터를 수정하고 열을 varchar로 변경하십시오!

+0

나는 질문을 게시하기 전에 이것을 먼저 시도했지만 여전히 같은 문제가있다. 당황 스럽네! – Maz

+0

'Cellphone bigint (11)'처럼 보이지만 왜 '점'에 오류가 있다고 말합니까? –

+0

"07951234567"의 값이 int (Point)는 오버플로하지만 bigint (핸드폰)는 오버플로됩니다 ... 이는 열 순서와 관련이 있습니다. – Kritner