티스토리 뷰

728x90

누군가 서버를 리부팅 해도 되냐고 물어봐서 하라고 한 후 서비스를 올리는데 데이터베이스를 찾을 수 없다는 에러가 났다.

내 데이터베이스 명은 대문자인데 (예:TEST_DB) 에러는 소문자로 test_db를 찾을 수 없다는 것이다.

응...? 

 

그래서 lower_case_table_names 설정을 확인했더니 value 값이 1로 되어있었다.

linux는 value의 기본값이 0이다. 

show variables like 'lower_case_table_names'

여기서 내가 착각 한 것이 있는데, 0은 sensitive이고 1은 insensitive 이니 이 문제는 아니라고 생각했다.

 

왜냐하면 1은 대소문자를 구분하지 않으니 명령어 use TEST_DB; 를 입력하든 use test_db; 입력하든 데이터베이스를 사용 할 수 있어야 된다고 생각했다.

 

그러나!

lower_case_table_names = 1 은

모든 명령어를 소문자로 인식 하기 때문에 기존에 대문자로 만들어놓은 데이터베이스는 사용 할 수가 없었다.

  • When set to 1 (the default on Windows), table names and database names are stored in lowercase and compared in a case-insensitive manner.
#대문자로 명렁어를 입력해도
use TEST_DB  
#소문자로 인식
use test_db

 

왜 변경 되었는지는 모르겠으나..원인을 알았으니 해결을 해야한다. 해결 방법은 아래와 같다

# my.cnf 편집
vim /etc/my.cnf

# my.cnf에 설정값 추가
[mysqld]
lower_case_table_names=0

#재시작
systemctl restart mariadb
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함