공부/SQL
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번으로 해결하였습니다.