본문 바로가기

euckr -> utf8 백업 / 복구


 

mysql 4.0(euc_kr) 을 5.0(utf-8)으로 이동하는 방법

콘솔에서

1.mysqldump --default-character-set=euckr db명 > backup.sql
  1.1. 문제 : mysqldump: Character set 'euckr' is not a compiled character set and is not specified in the '/usr/local/mysql/share/mysql/charsets/Index' file
       설명 : mysql 4.0은 euc_kr이다. 아래와 같이 바꿔준다.
       참고 : 4.0은 euc_kr을 쓰고 4.1이상은 euckr이다.
- mysqldump --default-character-set=euc_kr db명 > backup.sql   
  2.2. 문제 : mysqldump: Got error: 1045: Access denied for user: 'root@localhost' (Using password: NO) when trying to connect
       설명 : 쉽게 말해 백업 안된다 소리 계정 로그인 추가하여 백업한다. 아래와 같이 바꿔준다.
- mysqldump -u아이디 -p패스워드 --default-character-set=euc_kr db명 > backup.sql

2.euc_kr to UTF-8 : euc_kr을 UTF-8로 바꿔준다.일괄.
  iconv -f CP949 -t UTF-8 backup.sql > backup2.sql

3.복구한다. 복구는 그냥 해도 됨. 디비가 utf-8이면 굳이 character-set 안 잡아줘도 된다.
  mysql -u아이디 -p패스워드 db명 < backup2.sql 

*참고
  2.번을 하지 않았을 경우 내경우는
     1.1. 컬럼 기본값중에 한글이 있었는데 default '사용'이 기본값인 컬럼이 있었는데
           그부분에 복구시 에러가 난다
            ERROR 1067 (42000) at line 3424: Invalid default value for '컬럼명'

     2.2 디비에 한글은 공란으로 되어 있다.

추가.
만일 sql 파일에서 character set이 있으면 삭제한다.

테이블이 너무 크면 나누자 스키마와 내용

테이블 스키마만 뜨기
mysqldump -u아이디 -p패스워드 --no-data --default-character-set=euc_kr db명 > backup.sql

테이블 데이터 뜨기
mysqldump -u아이디 -p패스워드 --no-create-info --default-character-set=euc_kr db명 > backup.sql