docker mysql 연결시 "Illegal mix of collations"오류 발생

3345 단어 MySQL도커Rails6
개발 환경에 docker를 도입하고 docker-compose up 를 한 후에 로그인을 하려고 했는데 에러가 발생. 데이터베이스에 접속할 수 없게 되어 버렸으므로, 그 때의 대처법을 기록으로서 남깁니다.

오류 내용



 ActiveRecord::StatementInvalid (Mysql2::Error: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='):

latin1이라는 문자 코드와 utf8이라는 문자 코드가 혼합되어 있기 때문에 발생하는 오류와 같습니다.

정말 혼재하고 있는지 확인하기 위해 이 기사 을 참고로 Docker상에서 MySQL에 로그인해 보았습니다.



확인해 보면 latin1과 utf8이 혼합되어 있음을 알 수 있습니다.
그리고 latin1이라는 문자 코드는 일본어를 다룰 수 없기 때문에 이것을 utf8로 변경해야합니다.

해결 방법


docker-compose.yml 를 다음과 같이 변경했습니다. ( 이 기사 , 및 dockerhub 내 mysql 공식 참조 참조)

docker-compose.yml
version: '3'

services:
  db:
    image: mysql:5.7

    ↓↓↓# 文字コードをutf8に指定 この1行を追加する↓↓↓
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci

   environment:
      MYSQL_USER: root
      MYSQL_PASSWORD:
      # 仮想コンテナにアクセスするためのポート番号
    ports:
      - "3306:3306"
      # データを永続化する(ホスト側のdb/mysql/volumesをコンテナ側の/var/lib/mysqlに同期する)
    volumes:
      - mysql-data:/var/lib/mysql


db에 명령을 추가하여 문자 코드 설정을 전달할 수 있습니다.

다시 도커를 시작했는데 오류가 발생하지 않고 안전 문제가 해결되었습니다!

마지막으로



docker를 시작한지 ​​얼마 안된 초보자로 모르는 곳을 모르는 상태입니다만, 1보씩 진행해 갑니다! !

좋은 웹페이지 즐겨찾기