본문 바로가기
Error

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '=' 2가지 해결방법

by GoodDayDeveloper 2021. 12. 21.
반응형

 

 

안녕하세요. 어김없이 에러 포스팅을 쓰고 있군요...ㅜㅜ

저 같은 경우, 개발 환경에서 로컬 디비로 우선 연결하여 개발을 진행하려하는데 아래와 같은 에러가 나타났습니다.

 

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='

 

처음보는 에러에다가 부등호도 보이고...짜증나더군요 ㅡㅡ


여러 경로로 확인해봤더니

COLLATION, 즉 특정 캐릭터셋으로 작성된 문자열을 비교하다가 발생하는 에러입니다.

전 아래 에러와 같이 utf8_general_ci 와 utf8_unicode_ci의 충돌로 인해 발생된 것 같습니다.

이 현상을 해결하기 위한 두가지 방법을 소개하려 합니다.

 

 

 

1. 데이터베이스 및 테이블의 COLLATION을 맞춰줍니다.

 

이 현상에 대해 구글링을 하면 흔히 나오는 해결방법입니다. 그래서 저도 해보기로 했죠!

3개의 테이블이 COLLATION이 안맞는걸 확인하고 변경해주었습니다.

 

DB 변경 :  ALTER DATABASE '데이터베이스 이름' CHARACTER SET utf8 COLLATE utf8_general_ci

테이블 변경 :  ALTER TABLE '테이블 이름' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci

 

 

 

적용하고 설레이는 마음으로 실행하였지만.... 해결되지 않았습니다............ㅡㅡ

 

 

 

2. MYSQL 환경설정 변경

 

그래서 찾다 보니 MYSQL 환경설정쪽을 한번 보았습니다.

경로 : mysql > my.ini

확인해보니 collation-server 환경설정에 utf8_unicode_ci 라고 설정되어 있더군요... 

데이터베이스와 테이블은 utf8_general_ci로 설정되어 있지만,

정작 mysql 환경설정에서는 utf8_unicode_ci 로 되어 있어 충돌이 발생하였던거죠!

 

collation-server 를 utf8_general_ci 변경해주었더니 오류가 해결되었습니다!

 

 

반응형

댓글