programing

MySQL 오류 1264: 열의 값을 벗어났습니다.

yoursource 2023. 1. 25. 08:53
반응형

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

반응형