Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL ERROR 1406 수정:데이터가 열에 비해 너무 깁니다.

<시간/>

이 오류는 허용된 한도보다 높게 데이터를 설정하려고 하면 발생할 수 있습니다. 예를 들어 varchar 또는 string의 크기가 비트 데이터 유형보다 크기 때문에 비트 유형의 열에 문자열을 저장할 수 없습니다.

비트 유형 열에는 다음 구문을 사용해야 합니다.

anyBitColumnName=b '1'ORanyBitColumnName=b '0'

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> 테이블 생성 IncasesensitiveDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Name varchar(10), -> PRIMARY KEY(Id) -> );쿼리 OK, 영향을 받는 행 0개(0.70초) 

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 레코드를 삽입하는 쿼리는 다음과 같습니다.

mysql> insert into ErrorDemo(Name,isStudent) values('John',1);Query OK, 영향을 받는 1개 행(0.18초)mysql> Insert into ErrorDemo(Name,isStudent) values('Sam',0);쿼리 OK, 1행 영향(0.21초)mysql> ErrorDemo(Name,isStudent) values('Mike',0)에 삽입;Query OK, 1행 영향(0.16초)mysql> ErrorDemo(Name,isStudent)에 삽입 values('Larry',1);쿼리 OK, 1행 영향(0.23초)mysql> ErrorDemo(Name,isStudent)에 삽입 values('Carol',1);Query OK, 1행 영향(0.11초)mysql> Insert into ErrorDemo(Name,isStudent) values('Robert',0);쿼리 OK, 1행 영향(0.17초)mysql> Insert into ErrorDemo(Name,isStudent) values('James',1);Query OK, 1 영향을 받는 행(0.18초)mysql> ErrorDemo(Name,isStudent) values('Bob',1)에 삽입, 쿼리 확인, 1개 영향을 받은 행(0.19초)mysql> ErrorDemo(Name,isStudent) 값에 삽입('David' ,1);쿼리 OK, 1행 영향(0.15초)mysql> ErrorDemo(Name,isStudent) values('Ricky',0)에 삽입;쿼리 OK, 1행 영향(0.17초)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다.

mysql> 선택 *ErrorDemo;

다음은 출력입니다.

+----+--------+-----------+| 아이디 | 이름 | isStudent |+----+--------+----------+| 1 | 존 | || 2 | 샘 | || 3 | 마이크 | || 4 | 래리 | || 5 | 캐롤 | || 6 | 로버트 | || 7 | 제임스 | || 8 | 밥 | || 9 | 데이비드 | || 10 | 리키 | |+----+--------+-----------+10행 세트(0.00초)

실제 샘플 출력 스냅샷은 다음과 같습니다.

MySQL ERROR 1406 수정:데이터가 열에 비해 너무 깁니다.

오류는 위에서 설명한 대로 다음과 같습니다. 아래 쿼리에서 생성됩니다.

mysql> 업데이트 ErrorDemo set isStudent='1' where Id=9;ERROR 1406 (22001):1행의 'isStudent' 열에 대한 데이터가 너무 깁니다.

위의 오류를 방지하려면 '1' 앞에 b를 붙여야 합니다. 이제 쿼리는 다음과 같습니다.

mysql> update ErrorDemo set isStudent=b'1' where Id=9;Query OK, 영향을 받는 행 0개(0.00초) 일치하는 행:1 변경됨:0 경고:0

select 문을 사용하여 테이블 레코드를 다시 한 번 확인하십시오. 쿼리는 다음과 같습니다.

mysql> 선택 *ErrorDemo;

다음은 출력입니다.

+----+--------+-----------+| 아이디 | 이름 | isStudent |+----+--------+----------+| 1 | 존 | || 2 | 샘 | || 3 | 마이크 | || 4 | 래리 | || 5 | 캐롤 | || 6 | 로버트 | || 7 | 제임스 | || 8 | 밥 | || 9 | 데이비드 | || 10 | 리키 | |+----+--------+-----------+10행 세트(0.00초)

실제 샘플 출력 스냅샷은 다음과 같습니다.

MySQL ERROR 1406 수정:데이터가 열에 비해 너무 깁니다.

is Student 칼럼을 보십시오.

이제 동일한 ID를 값 0으로 업데이트합니다. 그러면 해당 ID와 함께 공백 값이 제공됩니다. 쿼리는 다음과 같습니다.

mysql> update ErrorDemo set Name='Maxwell', isStudent=b'0' where Id=9;Query OK, 영향을 받는 행 1개(0.16초) 일치하는 행:1 변경됨:1 경고:0

위에서 업데이트 된 특정 행의 레코드를 확인하십시오. 다음은 ID 9입니다. 이제 행이 레코드 ID 9로 업데이트되었습니다. 쿼리는 다음과 같습니다.

mysql> Id=9인 ErrorDemo에서 *를 선택합니다.

다음은 출력입니다.

+----+---------+----------+| 아이디 | 이름 | isStudent |+----+---------+-----------+| 9 | 맥스웰 | |+----+---------+-----------+1행 세트(0.00초)