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;
반응형
'DBMS' 카테고리의 다른 글
[PostgreSQL] 재시작없이 설정불러오기 (reload configuration without restart) (0) | 2024.06.29 |
---|---|
[PostgreSQL] 재시작없이 설정불러오기 (reload configuration without restart) (0) | 2021.02.03 |
[MariaDB] 문자열을 날짜로 STR_TO_DATE (0) | 2021.01.26 |
[Oracle]Archive Log 삭제 방법 (0) | 2014.04.16 |
[Oracle]Oracle 기동/종료 절차 (0) | 2014.04.16 |