예전 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 접속시의 문제.
이번 주제는 "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 접속시의 문제.
받은 트랙백이 없고
,
댓글이 없습니다.
,
트랙백 주소 :: http://taemy.experlab.com/trackback/328
% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %



댓글을 달아 주세요