안녕하세요. 어김없이 에러 포스팅을 쓰고 있군요...ㅜㅜ
저 같은 경우, 개발 환경에서 로컬 디비로 우선 연결하여 개발을 진행하려하는데 아래와 같은 에러가 나타났습니다.
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 변경해주었더니 오류가 해결되었습니다!
댓글