MySQL(MariaDB) 문자열 대소문자 구분

성난호랑이 시니철 ㅣ 2024. 2. 7. 14:42

 

MySQL(MariaDB) 문자열 대소문자 구분을 못합니다.

 

회원 아이디 중복체크 할때 

SELECT * FROM USER WHERE USER_ID = 'Sola'

 

검색하면 sola, SOla 대소문자 구분 없이 조회가 됩니다.

 

이를 구분하기 위해서는 몇가지 방법이 있습니다.

 

1. 조회 쿼리 수정

SELECT * FROM USER WHERE BINARY(USER_ID) = 'Sola'

 

조회시 BINARY 추가

 

2. 테이블 설정 변경

ALTER TABLE USER CHANGE USER_ID USER_ID VARCHAR(100) BINARY NOT NULL

 

3. DB 설정 변경

 - 설정 확인 

SHOW VARIABLES LIKE 'lower%';

 

lower_case_table_names 값이 0 이면 대소문자 구분 / 1 이면 구분안함

 

해당 설정은 my.cnf에서 수정 후 restart하면 변경이 가능하다.

 

vi /etc/my.cnf  접속 아래 값 0/1 원하시는 값으로 추가 

 

마지막으로 MySQL(MariaDB) restart 하면 됩니다.

 

systemctl restart mariadb   #maria 재기동
service mysql restart       #mysql 재기동

 

※ 기존테이블은 따로 수정해줘야 가능합니다.

 

위내용중 저는 이미 서비중인 서비스라 1번으로 해결하였습니다.