0 투표
이번에 MySQL 5.6 을 설치했더니 서버 연결 콜레이션(언어) - Server connection collation 값이 utf8mb4_general_ci 로 표시되요. 기존에 utf8_general_ci 와 차이점이 있나요?

1 답변

0 투표

차이점은 크게 “문자셋(utf8 vs utf8mb4)”“정렬/비교 규칙(collation)” 두 축으로 보면 됩니다.

1) utf8_general_ci vs utf8mb4_general_ci (핵심 차이)

✅ 문자셋 차이 (가장 중요)

  • utf8 (MySQL의 utf8): 실제로는 최대 3바이트(utf8mb3) 까지만 저장합니다. → 이모지(), 일부 확장 한자/특수문자 등 4바이트 문자는 저장 불가(깨지거나 오류).
  • utf8mb4: 최대 4바이트 UTF-8을 제대로 지원합니다. → 이모지 포함, 유니코드 전 범위 저장 가능.

즉, utf8mb4_general_ci는 “이모지까지 되는 UTF-8”이고 utf8_general_ci는 “이모지 등 일부 문자가 안 되는 UTF-8(3바이트)” 입니다.

✅ collation(…_general_ci) 의미

  • general_ci 는 비교/정렬 규칙 중 “일반(간단) 규칙”이라 빠르지만 정확도는 떨어질 수 있어요.
  • ci = case-insensitive (대소문자 구분 안 함)

2) 그럼 “서버 연결 콜레이션(Server connection collation)”이란?

질문에 나온 건 보통 현재 세션 연결에서 문자열을 비교/정렬할 때 쓰는 기본 규칙입니다. (DB나 테이블 collation과 다를 수 있어요.)

확인은 아래처럼 해보면 정확합니다.

SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

3) 뭘 쓰는 게 좋나요? (권장)

  • 새로 구축/운영 중이면 보통 utf8mb4 사용을 권장합니다. (이모지/확장문자 이슈 예방)
  • collation은 가능하면 general_ci보다 더 “정확한” 쪽을 많이 씁니다:

    • MySQL 5.6/5.7 계열: utf8mb4_unicode_ci를 많이 권장
    • (참고) MySQL 8.0이면 utf8mb4_0900… 계열이 더 최신이지만, 지금은 5.6이라면 위가 현실적

4) 주의할 점(마이그레이션 시)

  • utf8mb4는 문자당 최대 바이트가 늘어서 인덱스 길이 제한에 걸릴 수 있습니다(특히 InnoDB, 오래된 설정). 예: VARCHAR 길이가 큰 컬럼에 인덱스가 있으면 조정 필요할 수 있어요.

원하시면, 지금 DB/테이블/컬럼도 utf8mb4로 통일하고 싶은 건지(마이그레이션 여부), 아니면 “표시만 utf8mb4_general_ci로 나오는 이유”가 궁금한 건지에 맞춰서 점검 쿼리/변경 방법까지 딱 맞게 정리해드릴게요. 

구로역 맛집 시흥동 맛집
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
...