Program Tip

MySQL 오류 1264 : 열의 범위 값을 벗어남

programtip 2020. 12. 15. 19:43
반응형

MySQL 오류 1264 : 열의 범위 값을 벗어남


다음과 같이 SETMySQL의 테이블에서 cust_fax를 사용합니다.

cust_fax integer(10) NOT NULL,

그런 다음 다음과 같은 값을 삽입합니다.

INSERT INTO database values ('3172978990');

그러나 그것은 말한다

'오류 1264'가 열 값을 벗어났습니다.

그리고 오류가 어디에 있는지 알고 싶습니다. 내 세트? 아니면 다른?

모든 답변을 주시면 감사하겠습니다!


3172978990 값은 최대 값 인 2147483647보다 크므로 INT오류가 발생합니다. MySQL 정수 유형 및 해당 범위가 여기나열됩니다 .

또한 (10)in INT(10)은 정수의 "크기"를 정의하지 않습니다. 열의 표시 너비지정합니다 . 이 정보는 참고 용일뿐입니다.

오류를 수정하려면 데이터 유형을 VARCHAR. 전화 번호와 팩스 번호는 문자열로 저장해야합니다. 이 토론을 참조하십시오 .


데이터 유형을 bigInt로 변경할 수도 있으며 문제를 해결할 수 있습니다. 필요하지 않는 한 정수를 문자열로 유지하는 것은 좋지 않습니다. :)

ALTER TABLE T_PERSON MODIFY mobile_no BIGINT;

int 데이터 유형 의 길이를 초과합니다 . UNSIGNED 속성을 사용 하여 해당 값을 지원할 수 있습니다 .

SIGNED INT2147483647 까지 지원할 수 있으며 UNSIGNED INT 는 이보다 두 배를 허용합니다. 그 후에도 길이 10의 CHAR 또는 VARCHAR사용하는 것보다 데이터를 저장하고 싶습니다.


tl; dr

AUTO_INCREMENT범위를 벗어나지 않았는지 확인하십시오 . 이 경우 다음을 사용하여 새 값을 설정하십시오.

ALTER TABLE table_name AUTO_INCREMENT=100 -- Change 100 to the desired number

설명

AUTO_INCREMENT데이터 유형에서 허용하는 최대 값보다 큰 숫자를 포함 할 수 있습니다. 나중에 비운 테이블을 채웠지만 그대로 AUTO_INCREMENT유지 한 경우 발생할 수 있지만 다른 이유도있을 수 있습니다. 이 경우 새 항목의 ID가 범위를 벗어납니다.

해결책

이것이 문제의 원인 인 AUTO_INCREMENT경우 최신 행의 ID보다 큰 값 으로 설정 하여 해결할 수 있습니다 . 따라서 최신 행의 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';

참조 URL : https://stackoverflow.com/questions/14284494/mysql-error-1264-out-of-range-value-for-column

반응형