Web taemy's Site
예전 1,2회에 이어 3편.

이번 주제는 "Mysql Dump 시 charset - latin1 문제" 와 몇가지 팁

# 주의점 : 4.1.x 이상버전은 내부데이터는 utf8 로 처리된다.

현재 4.1.x 버전에서 dump 시 latin1 문제.
 - 내부는 utf8 로 처리되는데, 테이블은 latin1 이고, 데이터는 euckr 로 저장된 경우
 - 4.0.x 의 경우 내부는 latin1 이고 데이터는 euckr 인 경우 -> 4.1 로 이전시 문제.
 - 예전 4.0.x 버전에서 4.1.x 로 업그레이드시에 꼬여버린 상황인듯.

mysqldump --default-character-set=latin1 {DB} > dump.sql  형식
으로 백업해야 하는데, 그냥 mysqldump {DB} > dump.sql 한 경우에 문제가 발생한다.
그냥 dump 한 경우 utf8 로 인식하고 dump 되기 때문에 charset 이 꼬이는(?) 듯 하다.
그래서, 이것을 그냥 mysql {DB} < dump.sql 로 복구하면 데이터가 깨져서 저장된다.

그래서, 그냥 넣고 다시 latin1 으로 dump 를 받는다.
 1. mysqldump --default-character-set=latin1 {DB} > dump.sql 으로 제대로(?) dump 받는다.
 2. latin1 으로 된 부분을  euckr/utf8 등으로 변경 ( set names euckr , charset 도 euckr 로 변경 )
 3. 다시 restore 했을때는 깨지지 않는다.


# 이때 4.1.x 이상 -> 4.0.x 로 백업/복구 한다면...
  * mysqldump --create-options --compatible=mysql40 db_name > dump_file
      o --compatible=mysql40  옵션을 넣어서 백업하면 4.0.x 형태로 dump 된다.
  * euckr 로 맞추어야 한다면..
      o --default-character-set=euckr 를 추가해 준다.

# 참고
  * http://www.hackszine.com/blog/archive/2007/05/mysql_database_migration_latin.html
  * http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=37225
  * http://www.duppio.com/wk/index.php/Change_the_character_set_from_latin1_to_utf8_in_MySql
  * http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_db&wr_id=83799

ps. 요약식이라 정리가 덜 되어 이해하기 힘들 듯.
  다음에는 mysql 4.1.x 버전과 5.x 버전차이로 인해 my.cnf 의 옵션이 다르게 먹히는 문제를 살펴볼 예정.
  정확히 php 에서 mysql client 접속시의 문제.

이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/20 01:18 2007/06/20 01:18

트랙백 주소 :: http://taemy.experlab.com/trackback/328

% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %

댓글을 달아 주세요

[로그인][오픈아이디란?]