docker mysql 연결시 "Illegal mix of collations"오류 발생
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보씩 진행해 갑니다! !
Reference
이 문제에 관하여(docker mysql 연결시 "Illegal mix of collations"오류 발생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/take95/items/324e46138c9a53b5573a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)