콘솔에서
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