이 글은 OUTDATED된 글이지만, 개인적인 디버깅 아카이빙용으로 남겨둔다.
mysql에서의 한글 인코딩 문제를 해결하는 방법은 이 글을 참고하면 된다.
Azure database for MySQL을 사용하다가 한글 깨짐 현상이 나타났다.
구글링을 해보니 character set이 latin1으로 설정되어 있어서 나타나는 문제이고 이를 utf8로 바꿔주면 해결된다고 한다.
해결을 위해 시도해 본 방법은 다음과 같다.
1-1. Azure Database for MySQL 서버에서 설정 -> 서버 매개 변수
로 들어간다.
1-2. 그 중에서 다음과 같은 변수를 아래와 같이 바꿔준다. (위의 것만 바꾸면 아래는 같이 바꿔진다)
1-3. 저장하고 mysql을 다시 시작한다.
그런데 이렇게 했는데도 한글이 적용이 안되길래 알아 보니 기존에 이미 만들어져 있는 데이터베이스에는 소급 적용이 안된다고 한다. 그래서 다음 글을 참고해서 Azure CLI에서 database의 character set을 직접 바꿔줬다.
2-1. 일단 Cloud Shell을 열어서 mysql shell로 접속한다. 접속 명령어는 다음과 같다.
mysql -h server_name -u user_name -p
2-2. db의 character set을 바꿔준다.
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8;
2-3. character set이 잘 변경되었는지 확인해본다.
show variables like "c%";
그럼 아래와 같이 나온다.
character set이랑 collation이 utf8로 변경되었으면 끝이다.
그런데 나는 왜인지 몰라도 변경한 charset이 서버에 반영이 안되고 한글 깨짐 현상이 계속 나타나길래 그냥 db를 지우고 다시 만들어줬다.
DROP DATABASE db_name;
CREATE DATABASE db_name;
왜 안됐을까? 아마도 db에 제대로 적용이 되지 않았거나 mysql과 서버를 다시 실행하는 게 제대로 되지 않았던 이슈였지 않을까 싶다.
새로 db를 만들고 서버를 재시작하니 한글이 잘 나타나는 것을 확인할 수 있었다.