본문 바로가기
서버/Mysql

Mysql Table 대소문자 구분 설정

by 코딩히어로 2021. 12. 21.
728x90

Mysql를 운영하다 보면 Table명을 설정할 때 대소문자에 대한 고민을 하게 됩니다.

 

기본적으로 Windows는 대소문자 구분을 하지 않는 게 기본 설정이지만

 

리눅스는 테이블 name조차도 파일로 관리하기 때문에 대소문자를 구분하는 게 기본 설정입니다.

 

Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory

 

windows 환경에서 개발하고 리눅스에서 운영한다거나 하는 경우 이 대소문자 구분 때문에

 

테이블 인식이 안 되는 경우가 있는데 간단하게 대소문자 구분 설정으로 해결이 가능합니다.

 

mysql에 로그인 한 뒤에 아래와 같이 sql문을 실행합니다.

 

show variables like 'lower%';

조회된 테이블에서 두 번째 항목인 lower_case_table_names가 바로

 

테이블 대소문자 구분에 대한 설정값입니다.

 

이 부분이 1로 되면 대소문자 구분을 안 하고 0이면 대소문자 구분을 한다는 의미입니다.

 

set lower_case_table_names=1;

 

자 그럼 sql문을 통해 세팅을 해보겠습니다.

위와 같은 에러 문구를 보이면서 설정을 할 수가 없습니다.

 

왜냐하면 해당 설정값은 read만 가능한 값이기 때문입니다.

 

그럼 설정을 할 수가 없을까..?

 

아닙니다 my.cnf 파일에서 설정이 가능합니다.

 

vim /etc/my.cnf

 

위 파일을 열어주고

[mysqld] 아래쪽에 lower_case_table_names=1을 입력한 뒤에

 

mysql을 restart 해주면 설정이 된 것을 확인할 수 있습니다.

여기서 주의할 점은 반드시 [mysqld] 구분 아래쪽에 적어주어야 설정이 됩니다.

728x90
반응형

댓글