반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- continue 사용법
- 중첩 break
- 오블완
- 객체지향
- 입출력
- 붕대 감기
- 자바의 정석
- 자바의정석
- java
- 붕대 감기 자바
- 티스토리챌린지
- 프로그래머스 붕대 감기
- 프로그래머스
- spring security 설정
- break 사용법
- 멀티태스킹
- SQL Mapper
- 리눅스
- 다형성
- 오버라이딩
- over()
- 쿠키
- 혼공얄코
- spring security
- hackerrank
- 멀티프로세싱
- 오버로딩
- contiune
- 캡슐화
- CPU
Archives
- Today
- Total
쉽게 쉽게
MariaDB 대소구분 해결 본문
반응형
1. 이슈
MariaDB은 기본적으로 대소문자 구분 없이 비교 및 검색이 가능하다.
그러나 userid로 로그인 중 대소문자가 구별이 되지 않아 오류가 발생했다.
예를 들어 테스트라는 유저의 아이디는 test12인데, Test12와 test12가 모두 동일하게 조회되어 로그인이 되지 않았던 현상이다.
때문에 MariaDB에서 직접적으로 대소문자를 구별해주기 위한 작업을 진행했다.
2. 해결방법
아래는 문제가 발생했던 쿼리를 재현한 것이다.
--문제 쿼리--
SELECT userid FROM user_table WHERE userid = 'test12'
-- 조회결과 --
Test12, test12 모두 나옴
해결방법1: 조건에 BINARY 함수 추가
--문제 쿼리--
SELECT userid FROM user_table WHERE BINARY(userid) = 'test12'
-- 조회결과 --
test12만 나옴
해결방법2: 테이블 생성시 추가
BINARY 문자열 타입은 문자가 아닌 바이트를 기준으로 비교나 검색을 진행한다.
MariaDB에서 지원하는 BINARY타입에는 BINARY, VARBINARY, BLOB이 있다.
생성시 데이터 타입을 지정
-- 데이터 타입을 BINARY 문자열 타입으로 지정 --
CREATE TABLE `user_table` ( `userid` varbinary(10) NOT NULL, PRIMARY KEY (`userid`) )
-- 단 BLOB로 표현되어 유지보수시 번거로울 수 있다.
BINARY 옵션 추가
-- BINARY 옵션을 추가 --
CREATE TABLE `user_table` ( `userid` varchar(10) binary NOT NULL, PRIMARY KEY (`userid`) )
-- 해당 방법을 추천
참고
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
반응형
'DB > MYSQL와 MariaDB' 카테고리의 다른 글
[MariaDB]MariaDB에서 오라클 DB 연동 (0) | 2024.08.12 |
---|---|
[MariaDB] 이클립스 MariaDB와 연동하기 (0) | 2024.08.06 |
[MYSQL] 윈도우 함수 정리 (0) | 2024.07.08 |
[MYSQL] select문에 count 여러개 (0) | 2024.07.04 |
[MYSQL] 쿼리 속도개선 (1) | 2023.12.10 |