본문 바로가기

DB/MySQL,MariaDB

[MySql] varchar 5라면 한글은 몇 글자까지 들어갈 수 있을까?

메시지를 담는 컬럼이 크기 초과로 에러가 발생했다.

(conn=581480) Data too long for column 'RESULT_MSG' at row 1
org.hibernate.engine.jdbc.spi.SqlException

방어 코드를 넣기 위해 최대 크기를 테스트 해보았다.

 

임시 테스트 생성

임시로 테스트 테이블을 만들고...

create table P_TEMP (
    id int(20) unsigned auto_increment,
    name varchar(5) null,
    PRIMARY KEY (id)
);

6글자를 초과하는 데이터를 입력해본다. (당연히 실패를 예상하고 진행)

INSERT INTO `payment`.`P_TEMP` (`name`) VALUES ('나모의노트2')
[2019-12-12 11:51:54] [22001][1406] Data truncation: Data too long for column 'name' at row 1

한글 5글자를 넣어본다. (될까?)

INSERT INTO `payment`.`P_TEMP` (`name`) VALUES ('나모의노트')
[2019-12-12 11:52:40] 1 row affected in 14 ms

MySql 버전 확인

이 결과는 MySql 버전에 따라 다를 수 있다. (경우에 따른 버전 확인은 제타 위키 참조)

위의 테스트한 것은 5.7에서 테스트를 진행했다.

버전 4에서는 바이트단위였다고 한다. (출처)

select version();
5.7.12-log

크기를 구해보자

length가 문자열의 길이를 구해줄 것 같지만 byte단위의 크기를 돌려준다.

문자열의 길이는 char_length이다.

select name, length(name), char_length(name) from P_TEMP where id = 1;

결과