MYSQL Data Conversion
(latin1 to utf8)
Fedora에 RPM형태로 설치된 Mysql은 기본적으로 latin1이라는 우리와는 별로 친숙하지 않은 문자형태로 되어 있다. 완벽하지 않지만 기본적으로 utf8도 지원하지 때문에 별다른 문제 없이 쓰는 경우가 많다. 하지만 자잘한 문제점들이 발생하기 때문에 utf8로 변환하여 주는것이 좋다. 최근에 시작한 프로젝트도 아무 생각없이 문자셋이 latin1이라는 사실을 생각하지 못하고 코딩하다 몇가지 select, order등에서 문제에 봉착하였다. 이글도 또 잊어버리지 않고자 남긴다.
백업 및 변환
1. 백업
[root:/root]mysqldump -u root -p --opt --default-character-set=latin1 \ --skip-set-charset DBNAME > DBNAME.sql
2. 기존에 latin1으로 생성되던 Table들을 utf8로 스크립트를 변경
[root:/root]sed -e 's/latin1/utf8/g' -i ./DBNAME.sql
3. DB 삭제 및 재생성
[root:/root]mysql -u root -p Enter password: mysql>drop database DBNAME mysql>create database DBNAME CHARACTER SET utf8 COLLATE utf8_general_ci mysql>exit
4. 데이터 변환 및 입력
[root:/root]iconv -f ISO8859-1 -t UTF8 DBNAME.sql > DBNAME_utf8.sql [root:/root]mysql -p --default-character-set=utf8 DBNAME < DBNAME_utf8.sql
5. 확인(latin1상태에서 utf8 Table을 select하는 경우)
| mysql> select * from menus; +-------+-----------+----------------------- | no | menu | name +-------+-----------+----------------------- | 20000 | ESTIMATE | 寃ъ쟻愿?由? | 40000 | PROCESS | 怨듭젙愿?由? | 30000 | ORDER | ?묒뾽吏??? |
MYSQL 환경 전환
1. my.cnf 변경
vi /etc/my.cnf
|
[mysql]
[mysqld] ...
[client] |
my.cnf에 위와 같이 추가한다.
2. 서버 재시작
| [root:/root]cd /etc/init.d [root:/etc/init.d]./mysqld restart MySQL 를 정지 중: [ OK ] MySQL (을)를 시작합니다: [ OK ] |
3. 확인
|
mysql> select * from menus; ... mysql> \s ... Protocol version: 10 ... |
euc-kr도 같은 형식으로 바꾸면 됨

