docker-compose로 mysql을 띄우고 프로젝트를 진행했다.
mysql에 미리 넣어줘야할 데이터가 있어서 docker 실행 시에 sql파일을 불러오게 하려고 했는데 잘 안되더라...
그래서 포기하고 docker가 띄워지면 mysql 콘솔을 통해 직접 넣어주려고 했다.
설정 다 해주고 sql파일을 복사한 다음에 붙여넣기 해주었는데,
이상하게 한글로 입력한 데이터는 그냥 빈값으로 붙여넣어지더라
가장 먼저 든 생각은 utf 설정문제인 것 같아서
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --skip-character-set-client-handshake
이 구문을 docker-compose mysql 코드에 추가했다.
성공 했을까?
NOoooooo....
진짜 영문을 모르겠더라 한 번도 이런 적이 없어서 어떻게 해결해야 할지도 몰랐다.
이곳저곳 찾아보면서 서치하다가 복사 붙여넣기 말고 그냥 입력해보자 해서 그냥 입력했는데, 한글 입력 자체가 안되더라..
물론 입력은 되는데 바로 지워진다
이걸 키워드로 잡고 한글 입력이 안된다는 것에 집중해서 찾아보니
Locale 설정이라는게 있더라
mysql 콘솔에 locale이라고 치면, 현재 사용중인 locale이 나오는데, 나와 같은 문제를 겪는 사람들은 아마 전부 POSIX로 나와있을 것이다.
우리는 이걸 변경할 것이다.
# locale -a
C
C.UTF-8
POSIX
locale -a 라고 치면 사용 가능한 locale 목록이 나오는데,
우리는 여기서 C.UTF-8을 사용할 것이다.
다시 docker-compose 파일로 돌아가자.
그리고
environment:
TZ: Asia/Seoul
LANG: C.UTF-8
이 코드를 추가해주면 된다.
TZ는 time_zone을 뜻하고 밑에 있는 LANG이 내가 그토록 찾던 설정이다.
해당 코드를 적용하고 build를 진행해보자
build 완료 후 mysql 콘솔에 한글을 입력했는데.....

진짜 이거때문에 한 2시간은 날린 것 같다.
sql문도 다시 넣어줬더니 잘 되더라
그래도 성공해서 다행이다..!
좀 삽질을 했던게
Django 모델을 통해 migrate를 하게 되면, mysql 테이블 설정이 Django 모델에서 설정한대로 들어가는 줄 알았다.
(ex. created_at 필드의 auto_now_add 같은 설정..)
생각해보면, Django에서 처리를 하는건데 쿼리문을 직접 mysql에 날려놓고 이상한 걸 기대했다..
덕분에 아주 귀찮게 자동 설정되도록 한 필드까지 추가한 다음에 데이터베이스에 입력을 성공할 수 있었다.