brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 Dec 29. 2021

Python : pymysql error(1267)

# mysql error code 1267

파이썬에서 MySQL 연동에서 발생하는 에러 메시지


(1267, "Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='")


이게 무슨 뜻일까?


illegal : 불법

mix of collations : 비교*대조 옵션 믹스


이렇게만 보면 뭐가 문제인지 알 수 없었다. 

대략적으로 'utf8 블라블라' 를 보고 인코딩(?) 인가 하는 추측 정도는 할 수 있었다.


먼저 DBA 에게 문의한다.

혹시 테이블 생성 시, 정의된 charset이 어떻게 되는지.

utf8 인지 utf8mb4 인지.


어랏!?

utf8mb4 로 잘 맞춰저 있다고 한다.

그럼 utf8_general_ci 는 어디서 온거지?


보통 문제의 원인은 99% 사람의 손으로 만들어진 코드에서 발생한다.

즉,

내 잘못일 가능성이 매우 크기때문에 스스로의 코드에서 정답을 찾아보는게 좋다.


보통 파이썬에서 MySQL 에 연결하는 설정을 할 때,

charset='utf8' 옵션을 지정해주는 경우가 있다.

나 역시도 간과하고 넘어가기 때문에 당연히 utf8 아닌가? 하는 생각을 했다.


단순히 문자열을 insert 할 때에는 위의 에러 코드를 만나지 않는다.

DBA와 커뮤니케이션을 잘 했다면 발생하지 않았을 문제이다.




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari