기타
MySQL database character set 변경
공부의 Sun
2020. 6. 3. 20:00
상황
- ERROR 1366 (HY000) : incorrect string value : '\xED\x95\x9C\xEA\xB2\x8C...' for column 등과 같은 에러메시지를 보여준다.
이유
- Mysql 데이터베이스가 latin1 문자열을 이용하기에 받아들이지 못하는 문자열이 있어 입력 오류가 발생한다.
해결방안
Mysql 기본 charset 변경
MySQL my.cnf 파일찾기을 참고하여 my.cnf 파일을 찾는다.
my.cnf 파일에 다음을 추가한다.
[mysqld] ... collation-server = utf8mb4_unicode_ci character-set-server = utf8mb4 skip-character-set-client-handshake ...
mysql을 재시작한다.
기존 데이터베이스, 테이블 charset 변경
다음의 명령어를 이용하여 mysql 데이터베이스를 백업한다.
$ mysqldump -u ${username} -p ${password} -c -e --default-character-set=utf8mb4 --single-transaction --skip-set-charset --add-drop-database -B ${dbname} > dump.sql
백업한 mysql 쿼리를 복사 후 다음과 같이 수정한다.
$ cp dump.sql dump-fixed.sql $ vi dump-fixed.sql (vi) :%s/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci/g (vi) :%s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8mb4/g (vi) :w!q
수정한 mysql 쿼리를 다음과 같이 적용한다.
$ mysql -u ${username} -p ${password} < dump-fixed.sql
참고
반응형