달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

예전에 latin1로 저장된  db를 그냥 옵기게 되면 한글이 깨져서 보이지 않게 됩니다.

그럴때 사용하기 위한 방법 입니다.

1. 백업하기
   mysqldump -u{username} -p{password} {dbname} --default-character-set latin1 > {dump}.sql
   여기서 제일 중요한 것이 --default-character-set latin1 입니다.
   이것이 없으면 온전하게 백업이 되지 않으니 여러가지로 어렵습니다.

2. 문자셋 변환하기
    (문제가 되는 것이 보통 이 과정에서 메모장이나 에디터를 이용하게 되면 깨져서 복원을 할때 에러가 발생합니다.)   
    utf8로 변환 할때 
    iconv -c -f cp949 -t utf-8  원본파일명  > 변환될 파일명.sql
    euckr 이라면 변환 할때 
    iconv -c -f cp949 -t euckr 원본파일명  > 변환될 파일명.sql

3. 복원될 테이블 구조 변환하기
    latin1 =>  utf8; 변경해도 됩니다.           -> 생략 가능 
   
    sed -e 's/latin1/utf8/g' -i 변환파일명.sql

5, 디비 생성 
    이때 utf8_general_ci 로 생성 합니다.      -> 생략 가능

6, mysql 을 다시 시작 합니다. 

7, 디비 복원 
mysql --default-character-set utf8 -u{username} -p{password} {utf8-dbname} < {dump}.sql 

utf8로 변환 할 경우 db에 한글이 깨져서 나오지만 웹에서는 한글 출력이 제대로 된다.

db에도 한글이 잘 입력되려면 euckr로 변환하면 된다.


출처 : http://hancem.tistory.com/5


Posted by dewlit
|