MySQL 오류 1264 : 열의 범위 값을 벗어남
다음과 같이 SET
MySQL의 테이블에서 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 INT 는 2147483647 까지 지원할 수 있으며 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
'Program Tip' 카테고리의 다른 글
Fortran이 과학 컴퓨팅에 사용되는 이유는 무엇입니까? (0) | 2020.12.15 |
---|---|
SQL Server FOR EACH 루프 (0) | 2020.12.15 |
C에서 "적어도"int 크기를 어떻게 요청합니까? (0) | 2020.12.15 |
Python / psycopg2 WHERE IN 문 (0) | 2020.12.15 |
AWS Lambda에서 Socket.io를 사용할 수 있습니까? (0) | 2020.12.15 |