[MySQL] 테이블 인코딩 변경 (latin1 -> utf8)

by ming
2016-10-16

현재의 접속 환경을 알아야 한다. 한글이 포함된 테이블이 있다고 치자. (테이블명 test) select * from test limit 1; // 한글이 잘 나와야 한다 set names latin1; select * from test limit 1; // 변함없이 한글이 잘 나와야 한다 set names utf8; select * from test limit 1; // 한글이 깨져 보여야 한다 자 이제 원래의 접속환경으로 되돌린다. set names latin1; 기존 테이블을 백업한다. create table test_bak like test; insert test_bak select * from test; 백업 테이블의 캐릭터셋을 접속환경과 일치시킨다 alter table test_bak convert to character set latin1; 기존 테이블의 캐릭터셋을 utf8로 변경한다 alter table test convert to character set utf8; 한글이 포함된 컬럼을 업데이트 시킨다. (키컬럼이 no이고, 한글이 포함된 컬럼이 lb) update test a join test_bak b on a.no=b.no set a.lb = convert(b.lb using binary); 확인한다. select * from test limit 1; // 한글이 깨져보여야 한다 set names utf8; select * from test limit 1; // 한글이 잘나와야 한다 모든 테이블의 인코딩을 완전히 변경시켰다면 mysql의 정보 파일을 열어 utf8 환경으로 바꾸자 /etc/my.cnf 파일을 열어 아래와 같이 수정한다. collation-server = utf8_general_ci init-connection = 'SET NAMES utf8' character-set-server = utf8 저장하고, mysql을 다시 시작한다 /etc/init.d/mysqld restart