[MySQL]운영서버에서는 조회되는 쿼리가 개발서버에서는 에러날때

flobeeee·2026년 3월 13일

시행착오

목록 보기
46/46
post-thumbnail

1. 상황

서비스에 A상자와 B상자가 있다
동일한 API고 어떤 상자를 열건지 상자id를 받아서 여는 로직이다.

운영에서는 A상자,B상자 모두 잘 열리고 있다.

개발서버에서는 보통 A상자에 대한 로직이 바뀌어서 A상자만 열면서 테스트했다.
그러다가 B상자도 한 번 열어봤다.
근데 무한로딩
..?

2. 에러메시지

Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

콜레이션 이슈였다.
테이블마다 콜레이션이 정의되어 있는데
A상자와 상품 테이블은 utf8mb4_general_ci 로 되어있고
B상자가 utf8mb4_unicode_ci 로 되어있었다.

콜레이션: 데이터베이스에서 문자열을 비교, 정렬, 검색하는 규칙을 정의하는 설정

규칙이 다르면 어떤 규칙을 따라야할지 몰라서 에러가 난다고 한다.

3. 해결

운영 테이블을 확인해보니
모두 같은 콜레이션으로 통일되어 있었다.

개발서버 테이블도 같은 콜레이션으로 통일했더니
A상자, B상자 모두 잘 열린다.


B상자가 2년도 더 넘게 생긴걸로 아는데
그럼 2년동안 아무도.. 개발서버에서 열지 않은걸까 ?

초기개발로 운영디비를 개발디비로 쓰다가 운영으로 해놓고
추가개발을 위해 개발디비를 만드는 과정에서 콜레이션이 다르게 설정되었을까..?

profile
기록하는 백엔드 개발자

0개의 댓글