본문 바로가기

Database/MySQL

[MySQL] Table에 한글로 입력된 데이터가 삽입되지 않을 때

[해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다.
따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.]

 

특정 테이블에 한글로 입력된 데이터를 삽입해야 할 필요가 있을 수 있다.

그러나 기본 테이블은 UTF8이 설정이 되어있지 않기에 한글이 깨져서 나오는 문제가 발생한다.

다음과 같은 에러가 대표적인 케이스이다.

 

mysql> ERROR 1366 (HY000) : incorrect string value : ''\x9A\xB1\xEC...' for column 'user_name' at row 1

 

이러한 문제를 해결하기 위해 다음의 2단계를 거쳐야한다.

 

1. Database설정 파일에서 default character-set을 UTF8로 설정하기

설정 파일은 다음의 경로에 존재한다. (CentOS 기준)

 

/etc/my.cnf

 

접속하면 기본적으로 [mysqld]에 관해서만 서술이 되어있을 것이다.

[client], [mysql]를 추가하고 모든 설정에 다음의 명령어를 추가하자.

 

[mysqld]
...
default-character-set=utf8
...

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

 

2. Table을 UTF8로 설정하기 

1번 과정을 끝낸 후, Table을 생성하고 다음의 명령어를 통해 character-set을 UTF8로 설정할 수 있다.

 

ALTER TABLE 테이블이름 convert to charset utf8;

 

마지막으로 정상적으로 적용시키기 위해 mysql restart를 통해 재시작시켜주도록 하자.