mysql 에서 한글값이 포함된 쿼리 실행시(insert / update) 아래와 같은 오류가 발생하는 경우에는 mysql character set 설정을 확인해 보아야 한다.
Error Code: 1366. Incorrect string value:
다음의 항목에 대해 확인 및 수정이 필요하다.
- 테이블 설정
- 데이터 베이스 설정값
- mysql 설정 수정 (my.cnf or my.ini)
설치 환경에 따라 전부 조치가 필요할 수도 있고, 작게는 테이블 character set 설정만 수정해도 된다.
테이블 character set 확인
mysql client 를 실행한 뒤 다음 명령으로 해당 테이블의 character set 을 확인한다.
show create table ‘테이블명’;
e.g. 결과 값을 확인해 보면 해당 테이블에 설정된 character set 을 확인할 수 있다 .
위 예에서는 latin1 으로 설정된 것을 알 수 있다.
이제 이 테이블의 character set 을 바꿔보자. 보통 unicode 지원을 위해 utf8 으로 설정한다.
alter table xxxxxxx(table명) convert to character set utf8;
데이터베이스 character set 설정 확인
다음 명령어를 실행하여 mysql 설정값들 중 character set 설정값을 확인한다.
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
이 값들은 mysql config 파일을 수정 한 뒤, mysql 을 재시작하면 된다.
$sudo vi /etc/mysql/my.cnf
아래 내용을 추가한다. 아무 설정이 없을 경우 아래 내용을 그대로 추가하면 되고, 해당 섹션에 다른 설정이 있을 경우에는 character-set 설정들만 추가한다.
[client]
#하단추가
default-character-set = utf8
[mysqld]
#하단추가
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8" default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
[mysqldump]
#하단추가
default-character-set = utf8
[mysql]
#하단추가
default-character-set = utf8
저장 후 , mysql 을 재시작한다. ( $sudo service mysql restart )
mysql client 로 접속하여 다시 mysql 설정값들을 확인 한다.
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
Reference
'Tips' 카테고리의 다른 글
Git ignore 설정 (0) | 2017.04.05 |
---|---|
Eclipse 에서 pom.xml 파일에 validation error mark (0) | 2013.02.22 |
Setting global environment variable on Mac OS X - 맥 환경변수 셋팅. (0) | 2011.05.20 |