mysql 환경을 utf8(기타) 환경 으로 이전하기..(덤프에서 넣는것까지..)

· 17년 전 · 3711 · 6

기본적으로 아시는 분들도 계시겠지만..
 mysql 언어셋에 관련해서 혹시나 모르시는 분들을 위해서 간단하게 정리해서 올립니다.

※ 아래의 내용은 mysql 4.1 이상 버젼부터 정상적으로 적용됩니다.



1. 가장 먼저 mysql로 접속 한 후 use {dbname};
    show variables like 'c%'; 로 확인을 합니다. 
   
+--------------------------+--------------
| Variable_name                 | Value             
+--------------------------+-------------
| character_set_client           | euckr            
| character_set_connection   | euckr            
| character_set_database     | euckr             
| character_set_results        | euckr                    
| character_set_server         | euckr                    

가장 중요한 것은..
character_set_client 와 character_set_connection 과
character_set_database의 속성을 잘 파악하여야 한다는 것입니다.

2.기존 DB를 Dump받습니다. 

  mysqldump -u{username} -p{password} {dbname} --default-character-set ecukr > {dump}.sql

  이때 Dump 받는 SQL은 database의 chracter set이 아니라,
  client가 실제로 사용한 character set. 즉 이경우에는 ecukr 로 저장되는게 맞습니다.

3. DUMP되어있는 sql 파일을 열어서
  CREATE DATABASE ..... DEFAULT CHARSET=euckr; 으로 되어 있는 놈을
  CREATE DATABASE ..... DEFAULT CHARSET=utf8; 로 변경합니다.

4. MySQL로 로그인 하여 새로 부어줄 DATABASE를 생성합니다.
CREATE DATABASE {utf8-dbname} DEFAULT CHARACTER SET utf8;
이렇게 하므로써, 다시 생성될 TABLE의 CHARSET도 utf8로 맞출 수 있게 됩니다


5. dump 한 data를 부어넣습니다.
mysql -u{username} -p{password} {utf8-dbname} < {dump}.sql



===========================

모두 끝난 다음의 절차 - my.cnf 체크

참고만 하시고 굳이 하지 않으셔도 됩니다.

[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

로 바꾸어 주고
mysql 를 restart 합니다.   
 

아무쪼록 소중한 DATA 깨먹는 일 없도록 하시기 바라면서 이만 줄이겠습니다.

 

|

댓글 6개

좋은 팁 감사합니다 ^^
감사합니다....^^
대비대비~
감사합니다.
15년 전
감사합니다.^^
감사합니다 !

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기
🐛 버그신고