본문 바로가기

DBMS

[MariaDB] UTF8 사용시 대소문자 구분을 위한 COLLATE 설정

728x90

현재 MariaDB를 사용하고 있는데, UTF8 인코딩으로 진행중 다음의 문제점을 발견했다.

SELECT * FROM TB_TEST WHERE TB_NAME = 'aaa';

라고 질의를 던지면 결과가…

aaa, AAA, AaA 등 내용에 대한 대소문자를 구분하지 않는다.


원인을 파악해보니, CHARACTER SET은 utf8 이지만 COLLATE에서 utf8_general_ci로 설정이 되어있어서 대소문자 구분이 안되는 것 이었다.

해결방법은 COLLATE를 utf8_bin 으로 변경을 하면 대소문자 구분이 가능해진다.

참고사항으로 MariaDB 10.0.11 기준인데, 일부 검색을 해보면 과거 버전(MySQL)의 경우에는 utf8_general_cs 로 변경하라고 나오기도 한다.


기존에 생성된 데이터베이스에 대한 변경방법으로는

ALTER DATABASE [Database Name] CHARACTER SET utf8 COLLATE utf8_bin;
ALTER TABLE [Table Name] CHARACTER SET utf8 COLLATE utf8_bin;
ALTER TABLE [Table Name] CHANGE [Column Name] [Column Name] CHARACTER SET utf8 COLLATE utf8_bin;

반응형