mysql 1406 / Data too long for column '' at row ?
2020. 5. 4. 15:11ㆍTrouble Shooting
728x90
Mysql / Maria DB 사용중 종종
Data too longData too long for column '<Column>' at row <[0-9]+>
위 와 같은 에러 문구를 볼 수 있는데,
이러한 상황에서는 DB에서 Global로 설정되어 있는 'STRICT_TRANS_TABLES' 가 명시되어 있으면
Data Insert를 엄격하게 관리하기 때문에 Column의 길이를 늘려도 계속해서 발생할 수 있는데,
이를 해제하면 길이를 초과할 경우 알아서 잘라서 버려버리고 에러를 출력하지 않게됩니다.
이는 무결성 검증에 굉장히 안좋은 현상을 초래할 수 있고, APP 검증보다는 당연히 DB상에서 검증하는게 훨씬 효율적이기에 이러한 설정이 되있다고 하는데, mysql 5.5에서는 이게 기본적으로 해제가 되있다고 하는군요...
select @@global.sql_mode; # SQL 설정 보기
# SQL 설정
set @@global.sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
INSERT에서 결과적으로
Data too longData too long for column '<Column>' at row <[0-9]+>
이런 에러가 나온다면 현재 설정한 Column 길의 값을 초과하는 데이터가 입력되었으니 당연히 늘려주어야 합니다.
Text의 경우 다음과 같은 크기를 가집니다.
TINYTEXT | 256 Bytes | 255 characters
TEXT | 64 Kilobytes | 65,535 characters
MEDIUMTEXT | 16 Megabytes | 16,777,215 characters
LONGTEXT | 4 Gigabytes | 4,294,967,295 characters
하지만 이러한 상황 이외에도 패킷의 수신 최대크기의 한계로 문제가 되는 경우도 있습니다.
select @@max_allowed_packet; # 패킷 최대크기 확인
SET GLOBAL max_allowed_packet = 1024 * 1024 * 32; # 패킷 최대크기 33,554,432 설정
728x90
'Trouble Shooting' 카테고리의 다른 글
[Mysql, MariaDB] [1292] Truncated incorrect DOUBLE value (0) | 2020.06.08 |
---|---|
GORM 컬럼명 지정하기 (0) | 2020.05.14 |
Oracle Cloud VM Instance 포트 개방 안될때 (0) | 2020.05.01 |
DevTools failed to parse SourceMap (0) | 2020.03.20 |
Django S3 ValueError : I/O operation on closed file (0) | 2020.02.27 |