MySQL 오류 1264: 열의 값을 벗어났습니다.
나로서SET
다음과 같이 MySQL 테이블에 cust_fax를 입력합니다.
cust_fax integer(10) NOT NULL,
그리고 다음과 같이 값을 삽입합니다.
INSERT INTO database values ('3172978990');
그런데 이렇게 되어 있어요.
"error 1264"가 열의 값을 벗어났습니다.
어디에 오류가 있는지 알고 싶어요?내 세트?아니면 다른 거요?
어떤 답변이라도 감사합니다!
값 3172978990은 2147483647보다 큰 값입니다.INT
– 이 에러가 발생한 것입니다.MySQL 정수 유형 및 범위가 여기에 나열됩니다.
또,(10)
에INT(10)
는 정수의 "크기"를 정의하지 않습니다.열의 표시 너비를 지정합니다.이 정보는 참고 사항입니다.
오류를 수정하려면 데이터 유형을 다음과 같이 변경하십시오.VARCHAR
. 전화 번호와 팩스 번호는 문자열로 저장해야 합니다.이 설명을 참조해 주세요.
또한 데이터 유형을 bigInt로 변경할 수도 있습니다. 그러면 문제가 해결됩니다. 필요한 경우를 제외하고 정수를 문자열로 유지하는 것은 좋지 않습니다.:)
ALTER TABLE T_PERSON MODIFY mobile_no BIGINT;
int 데이터 형식의 길이를 초과했습니다.UNSIGNED Atribute를 사용하여 이 값을 지원할 수 있습니다.
SIGNED INT는 2147483647까지 지원할 수 있으며 UNSIGNED INT를 사용하면 이보다 2배 이상 지원할 수 있습니다.이 후에도 길이가 10인 CHAR 또는 VARCHAR을 사용하는 것보다 데이터를 저장할 필요가 있습니다.
dr;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';
작업:
ALTER TABLE `table` CHANGE `cust_fax` `cust_fax` VARCHAR(60) NULL DEFAULT NULL;
테이블 ID 열 이름 삭제 및 자동 증분으로 생성된 새 ID만 정상적으로 작동합니다.
언급URL : https://stackoverflow.com/questions/14284494/mysql-error-1264-out-of-range-value-for-column
'programing' 카테고리의 다른 글
명령줄 ubuntu 16.04에서 php 버전 전환 (0) | 2023.01.25 |
---|---|
Larabel - 요청에 따라 세션 저장소가 설정되지 않음 (0) | 2023.01.25 |
CommonJs 모듈시스템에서의 "module.exports"와 "exports"의 차이점 (0) | 2023.01.25 |
하나의 캐치 블록에서 여러 예외 유형 포착 (0) | 2023.01.25 |
JavaScript로 리다이렉트하려면 어떻게 해야 하나요? (0) | 2023.01.25 |