데이터베이스

Total 205
Today 0
profile_image
슈퍼아이피
08-12-22 23:23 1개 1,323회
MySQL
업그레이드시 character set 문제 해결 방법
개인적으로는.. 서버를 직접 다룰일이 극히 드물기 때문에 다소 무관심 했었던 문제입니다.
 
서버를 업그레이드 하면서 생기는 여러가지 문제중 하나가 바로 MySQL character set 이나..
 
한글 문제입니다.
 
 
아래 내용은 latin1 => euckr , 또는 euckr => utf-8 등의 데이터 케릭터셋 변환등에 유용한 방법이 되겠습니다.
 
다시 말해서.. 아래처럼 바꾸는 것입니다.
 
character_set_database   | latin1  ==== > character_set_database   | euckr
 
이게 왜 필요한지는 지식검색이나 구글링 해보세요.
 
예) latin1 에서 euckr 로 바꾸기
 
1. 기존 데이터 백업 ( latin1 환경에서 서버 구동 )
mysqldump -u jude -p test --default-character-set=latin1 --skip-opt --add-drop-table --add-locks
--disable-keys > test_dump.sql
 
=> default character set 을 지정해 주는것이 좋습니다.
skip-opt 는 테이블들의 character set 까지 덤프 되는것을 막고자 함입니다.
실제로 덤프된 파일을 열어보면..
마지막 문자셋 부분이 빠져 있는걸 볼수 있습니다.
 
 
 
2. 기존 데이터 베이스 character set 바꾸기
mysql> alter database test default character set euckr;
 
=> alter database 전후에.. 아래를 실행하여 바뀐 부분을 살펴보세요.
mysql> show variables like 'char%';
 
보시면 아시겠지만 데이터 베이스의 문자셋이 바뀌어 있습니다.
 
서버 업그레이드 전에 사용되던 데이터들의 문자셋이 문제가 될때..
또는 문자셋을 바꾸고자 할때 유용한 방법이라는 말씀입니다.
 
 
 
3. 백업 데이터 복원 ( euckr 환경에서 서버 구동 )
mysql -u jude -p test < test_dump.sql
 
=> 끝입니다. 너무 간단한가요? 다른 방법도 물론 있습니다만.. 좀 더 간단한 방법을 찾아보던 끝에
내린 결론입니다.
다른 방법이란..
[1]. 테이블 구조와 데이터를 분리 백업하여 INSERT 하는 방법
[2]. mysqldump 된 파일을 열어 character set 을 수동으로 변경후에 저장하고
복구하는 방법..등 입니다.
 
하지만 [1] 의 경우 너무 복잡하고
[2]의 경우에는 몇 메가, 몇 기가씩 될지 모르는 파일을 열어서 문자셋을 수동으로 바꾼다는게
'미친짓' 에 가깝다고 할수 있죠.
 
 
 
latin1 시스템을 euckr 이나 utf-8 등 다른 문자셋 환경으로 바꾸거나
업그레이드 하는 방법에 대해서는.. 여기 저기 문서들이 발에 채일만큼 많이 있으므로..
어렵지 않을것이라 생각됩니다.
 
 
'누군가에게는 이것도 팁이냐? 치워라 샹로마' 하실테지만..
또 누군가에게는 그 토록 찾아 헤매던 해결 방법 일수도... 있겠죠~
 
 
사담 : 쓸 내용은 참 많은데.. 이넘의 선천성 귀차니즘 때문에..
AJAX 클래스에 대해서 좀 더 다뤄볼까..
fsockopen 으로 POST,COOKIE, 로그인, 파일 전송.. 등을 다뤄볼까..
curl 을 다뤄볼까..
예전에 언급했던 업로드 프로그래스바를 다뤄볼까..
그것도 아니면 소켓으로 메일을 보내거나 표준화된 메일이나 게시판 따위를 다뤄볼까..
 
사실 머리속에 어지럽게 떠도는 것들을 표현해보면.. 정리가 되어 지는 느낌이랄까?
그래서 저한테도 상당히 도움이 됩니다.
 
몇 분들이 AJAX 게시판 소스를 원하셨으나.. 남에게 보일만큼 정리가 되지 않은 관계로
다음으로 미뤘습니다.
 
따지고 보면 AJAX 라 불리우는 대상 자체는 그다지 매력적이지도 않고 어렵기는 커녕 너무 간단합니다.
간단한 스크립트 코드에 지나지 않지만.. 요상하게 웹 2.0 + 표준화와 맞물려서..
붐업되고 있네요.
 
또 뭔 얘길 하는건지..
아뭏든 조만간에 방문자도 없는 블로그는 접어버리고.. 개인 홈페이지에 둥지를 틀어야 겠습니다.
아무래도 누가 만들어 놓은것이라 맘대로 만질수도 없고..
블로그 라는 틀 자체도 매우 짜증 스럽네고.. 대체 블로그를 왜 쓰는지 건지 -_-~
 
오늘도 웹과 인터넷의 바다에서 즐거운 항해 하십시요.
우주 만큼은 아니지만 바다도 꽤 넓지 않습니까?
 

 

추천 0 비추천 0

댓글목록

슈퍼아이피님의 댓글

profile_image
슈퍼아이피 작성일

MySQL 데이터 버전 4.1 -> 4.0 으로 다운그레이드 하는 방법
mysqldump --create-options --compatible=mysql40 -uroot -p DBname >b.sql

mysql 4.1 버전부터는 mysqldump를 그냥 실행하면 utf-8 코드로 백업 받습니다.
따라서 mysqldump를 할때 --default-character-set=euckr 옵셥을 주면 euckr 코드로 덤프 받습니다.

4.1버전의 경우 latin1 으로 기본세팅이 되므로 euckr 대신 latin1으로 해야할 수도 있습니다.
인서트문이 한줄씩 나오지 않을때는 --extended-insert=FALSE 를 추가합니다.

그래서 --default-character-set=euckr  이거랑 같이 해주니

--compatible=mysql40  --default-character-set=euckr  이렇게 해주니 덤프나 복원이나 잘됩니다.
제대로 복원이 되었습니다.