mysql 테이블 이름 대소문자 관련 옵션 설정
lower_case_table_names = 0 // 테이블 생성 및 조회 시 대·소문자 구분한다.
lower_case_table_names = 1 // 입력 값이 대·소문자든 소문자로 인식 소문자 인식 파일 생성
lower_case_table_names = 2 // 윈도우에서 대·소문자를 구분해서 테이블생성
리눅스와 유닉스의 경우 0, 윈도우의 경우 1, 맥키토시의 경우 2 가 기본 값임.
하나의 플랫폼 OS상에서만 MySQL을 사용한다면 lower_case_table_names 변수를 변경시킬 필요나 관심이 없겠지만 대소문자를 구분하는 OS간 호환을 염두에 두는 경우라면 lower_case_table_names 또는 테이블 등의 이름생성 시 대소문자에 대한 판단이 중요하다.
예를 들어
윈도우상에서 테이블명을 UserInfo 라고 생성한 경우 쿼리문에서 userinfo라 사용할 수 있지만 리눅스상에서는 UserInfo라고 대소문자를 구분하여 정확히 써줘야 한다.
1. 리눅스(우분투)에 MySQL 설치 하고 테이블 생성 시 기본으로 대소문자를 구분한다.
2. 대소문자를 구분하지 않고 테이블 생성 할 때는 lower_case_table_names 옵션 변경
▶ my.cnf 파일을 열어서 아래 옵션을 추가한다.
sudo vi /etc/mysql/my.cnf
- [mysqld] 아래에 lower_case_table_names=1 을 추가 하고 저장한다.
[mysqld]
lower_case_table_names = 1
▶ mysql 서버 재기동
sudo service mysql restart
▶ 변경 사항 다시 확인 해 본다.
- mysql 로 로그인 해서 아래와 같이 쿼리해 본다.
- 아래 화면을 보면 1로 변경 된 것을 볼 수 있다.
3. 이젠 테이블명은 대소문자로 구분하지 않는다. 근데 이게 맞나 ?
- MS-SQL을 사용하는 경우 테이블명이 대소문자 구분하지 않아 Pascal Case를 사용하여 보기 좋게 했다. ( 단어의 첫문자를 대문자로 나머지는 소문자로 표현)
- MySQL의 경우 리눅스 환경에서는 대소문자를 구분하기 때문에 윈도우서버로의 이식성 등을 고려 하여 테이블명을 전부 소문자로 사용하는게 좋을 것 같기도 하다.
※ 물론 옵션 값 lower_case_table_names 를 변경하는 것도 하나의 방법이다.
[출처] 코딩 명명규칙 일반 사항|작성자 서브쓰리
4. 선택의 기로
▶ 모든 시스템에서 lower_case_table_names=1로 설정
- show tables 또는 show database 를 이용하여 테이블 및 컬럼명 볼 경우 원래 의도한 대소문자의 형태를 참고할 수 없다. 소문자로 만들어 진다. → 머 그럼 어때 편한데...
▶ 리눅스에서 lower_case_table_names=1 윈도우에서 lower_case_table_names=2로 설정
- 윈도우에서 대소문자를 구분하여 프로그램 해야 한다. → 엄청 불편할 듯
▶ 그냥 무조건 소문자로 쓴다. → 모든게 귀찮다. 내가 편해야 다른 사람도 편해진다.
5. lower_case_table_names=1 로 설정한 경우 사례 확인
▶ 테이블명을 대소문자 섞어 만들어도 소문자로만 만들어진 것을 확인 할 수 있다.
▶ 조회쿼리문에서 테이블명을 대소문자 섞어 써도 조회되는 것을 확인 할 수 있다.
※ 참고 http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01&m_no=21581&cat1=9&cat2=291&cat3=302&lang=k
'MySQL' 카테고리의 다른 글
MySQL 테이블명 대소문자 구분 (0) | 2014.01.24 |
---|---|
mysql 데이터 디렉터리의 위치 (0) | 2014.01.24 |
MySql 외부 접속 가능하게 설정하기 (2) | 2014.01.14 |
mysql like 그리고 regexp (0) | 2013.12.19 |
Mysql strict mode와 데이타 타입이 틀려도 에러가 안나게 설정하는 방법 (2) | 2013.12.10 |