언어코드가 다른 Mysql간에서의 백업과 복구
글쓴이: zz181321 / 작성시간: 금, 2006/09/22 - 6:20오후
mysqldump를 이용해서 게시판을 백업했습니다.
여기서 문제는, 백업한 mysql은 latin1을 사용하고 있었고,
새로 복구할 mysql에서는 uft-8을 사용하고 있었습니다.
이랬더니, 한글이 죄다 깨지더군요.
mysqldump를 사용하지 않고 그냥 db파일을 그대로 붙여넣으면 어떤건 깨지고, 어떤건 멀쩡합니다만,
공통적으로 한글이 제대로 입력되지 않습니다.
어떻게 한글이 안깨지게 변환 할 수 없을까요?
Forums:
alter table {table_name}
alter table {table_name} convert to character set utf8
로 바꿔보시기 바랍니다.
변함이 없네요 ;
쨩처짹?? 쩔쨉쩔첩???? ??짚쩌철
이게 하기 전..
쨩처짹?? 쩔쨉쩔첩???? ??짚쩌철
실행 후 입니다.
Query OK, 12 rows affected (0.01 sec)
Records: 12 Duplicates: 0 Warnings: 0
이런식으로 성공적으로 적용은 된 거 같습니다만..
변화가 없어버리네요 ;
mysql 의 버전상황이
mysql 의 버전상황이 어떻게 되나요?
참고할 만한 문서입니다 - http://annyung.oops.org/?m=white&p=mysql41
이전 mysql은 4.1.14고,
이전 mysql은 4.1.14고, 이동할 mysql 버젼은 4.1.21입니다.
젠투를 쓰고 있고요.
몇번을 해봐도 안 되네요 음...
덤프를 불러들여도, 그냥 db파일을 가져와서 붙여도 변환은 실패로 끝나네요.
LC_CTYPE=ko_KR.euckr
로 설정 해 놨는데, 이것과 뭔 관계가 있을까요?
제 생각엔
제 생각엔 덤프하실때 인코딩을 현재 터미널상의 인코딩으로 mysqldump 옵션에서 주시고 덤프하시는게 우선 가장 중요할 것 같습니다.
해보질 않아서 정확히는 모르겠지만 만일 환경변수에서 LANG이 eucKR이라면 dump시에도 euckr로 덤프를 하셔야 할듯 합니다.
아니면 latin1이 될수도 있구요.
테이블이나 데이터베이스의 인코딩에 따라서요.
그리고 덤프된 텍스트 파일의 한글이 깨져 보이지 않는 상황에서 utf8, euckr 등으로 인서트 해보셔야 할것 같습니다.
데이터가 많다면 우선 적은 데이터의 테이블 하나만 테스트 해보시고 잘 된다면 전체로 해보시면 될것 같습니다.
-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.
이전DB : latin1 (실제
이전DB : latin1 (실제 euckr)
dump 시 latin1 으로 dump : 이때 덤프된 데이터를 euckr 코드로 볼 수 있어야 겠지요.
이후DB : utf8
가장 간단한 방법!!
dump 된 파일 제일 처음에 SET NAMES euckr 을 적어놓고
cat dump.sql | mysql -p 하세요.
mysql 테이블은 호환이 안되니 덤프 내용에서 삭제하시고,
grant 명령으로 직접 하셔야 합니다.
emerge money
![](http://www.gentoo.org/images/gtop-www.jpg)
https://xenosi.de/
지금 확인해 보니 4.1
지금 확인해 보니 4.1 버전에서 dump 를 하면,
각 테이블 마다 ENGINE=InnoDB DEFAULT CHARSET=euckr; 이 붙는군요.
:%s/DEFAULT CHARSET=latin1;/DEFAULT CHARSET=utf8;/g 를 하셔야 겠습니다.
이렇게 하면,
SET NAMES euckr; 로 현재 클라이언트가 euckr 이라는 것을 알려주고,
DEFAULT CHARSET=utf8 로 테이블은 utf8 이라는 것을 알려주므로,
MySQL 이 자동으로 utf8 로 변환하여 넣어줄겁니다.
그리고 MySQL 5.0 을 권합니다.
emerge money
![](http://www.gentoo.org/images/gtop-www.jpg)
https://xenosi.de/
제가 제대로 이해한건지는 모르겠지만...
일단, --default-character-set=latin1 옵션을 줘서 덤프를떴습니다.
/*!40101 SET NAMES latin1 */;
여기를 /*!40101 SET NAMES euckr */;
그리고 ENGINE=MyISAM DEFAULT CHARSET=latin1;
를 DEFAULT CHARSET=utf8; 로 고쳤습니다.
그후 dump 했더니 ERROR 1062 (23000) at line 61: Duplicate entry '??' for key 1
라는 에러가... 아마도 한글이 깨져서 안 읽어지나 봅니다.
그래서 이번엔 --default-character-set=euckr 옵션을 줘서 덤프를떴습니다.
여전히 ENGINE=MyISAM DEFAULT CHARSET=latin1; 더군요.
같은 방식으로 넣어 줬더니 에러 엇이 들어가긴 했습니다만, 여전히 깨져보이더군요.
mysql은 5.0으로 새로 설치했습니다
일단 위에서
일단 위에서 말씀해주신 것 처럼 latin1로 지정해서 덤프를 받은 뒤, 받은 파일이 euckr로 잘 읽히는지 확인해보세요~ :)
SET NAMES 는 주석 없이
SET NAMES 는 주석 없이 쓰세요.
주석에 있는 내용은 원래 그러하다는 참조 정도의 역할일 겁니다. (아마도...)
emerge money
![](http://www.gentoo.org/images/gtop-www.jpg)
https://xenosi.de/
댓글 달기