본문 바로가기
프로젝트/협업 프로젝트(2023.12.18-2024.01.25)

[Key Word 개발기] maria db 대소문자 문제

by dal_been 2024. 1. 25.
728x90

우리 프로젝트에 mariadb를 사용했는데 로컬에서 어플리케이션을 실행해보니 갑자기 테이블이 없다고.. 오류가 나왔다...

뿐만 아니라 배포한 상태에서도 아래의 오류가 나왔다.

 

Error querying database.  
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table [테이블 명]

문제상황

 

그래서 찾아보니 리눅스 환경의 경우 db에서 대솝문자를 구분하게 설정하여 설치되어 있을 수도 있다고 한다.

처음 들어보는 이야기다... 그냥 항상 잘되서 아무 문제 없을 줄 알았는데...

 

그래서 다음 명령어를 통해 대소문자를 구분하는 지 확인 하였다

show variables like 'lower_case_table_name';

 

Value 의미
0 대소문자를 구분
1 대소문자 구분하지 않음

 

나의 경우 0으로 되어있었다. 그래서 1로 변경해야하는 상황이다.

 

 

해결방법

 

aws에서 ec2 docker에 mariadb를 컨테이너를 실행하여 사용했기때문에 그 기준으로 해결방법을 설명할 것이다.

 

sudo docker ps
sudo docker exec -it (mariadb컨테이너 이름) /bin/bash

 

mariadb 컨테이너가 실행되고 있다는 전제하에 ps를 통해 mariadb컨테이너 이름을 찾은다음

db로 들어간다.

 

이후

mariadb -u root -p를 치고 password에 db 패스워드를 치면 db접속 성공

 

일단 대소문자 구분 설정이 어떻게 되어있는지 확인하기 위해

show variables like 'lower_case_table_name';

 

한다. 나의 경우 0으로 되어있었기 때문에 1로 변경해준다

 

exit통해서 일단 나가주고 

 

apt-get update
apt-get install -y vim

패키지 목록을 최신 상태로 업데이트한후 vim 편집기를 설치한다.

 

 

위의 명령어를 차례대로 친후

 

vim my.cnf

 

 

[mariadbd]에

lower_case_table_name=1을 추가하던가 0이었던것을 1로 변경해준다

 

그리고 저장해주고 해당 mariadb 컨테이너를 종료시켜주고 다시 실행한후 위의 초반과정을 통해 다시 

show variables..... 를 쳐주서 바뀐지 확인하고 1이면 성공!!!

 


정말 처음 만난 에러라서 당황했다. 그래서 우리팀원들이 모여서 왜 저러지..3시간을 고민한 끝에 db자체의 설정문제임을 깨닫고 변경해주었더니 로컬에서든 aws에서든 잘 실행되었다