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번으로 해결하였습니다.
'공부 > SQL' 카테고리의 다른 글
Mariadb tmp 용량 증가 ( Disk full ) (0) | 2024.02.23 |
---|---|
MariaDB(mysql) 사용자 추가, 권한 부여, 외부 접속 추가 (0) | 2024.02.21 |
[MySQL] mariaDB Query Plan 계획(실행계획) (0) | 2024.01.08 |
MYSQL(mariadb) RECOVERY InnoDB 테이블 복구 (0) | 2024.01.05 |
MySQL ON DUPLICATE KEY (insert 기존에 있으면 update ) (0) | 2017.04.14 |