MySQL에서 DB명과 Table명을 대소문자 구분이 필요 할 때가 있습니다.
(해당 기능은 OS의 자체에서 대소문자가 구분이 되는 OS에서만 지원됩니다.)
>> : Win/Mac OS X에는 적용이 안된다고하네요? 왜 Mac OS에서 안된다고 하는지는 테스트 못해봄.
>> (결과) Mac OS X에 설치된 테이블명은 대소문자 구분이 가능
(예: TestTable, 그러나 select * from testTABLE; 이명령도 처리됨)
출처: https://www.lesstif.com/pages/viewpage.action?pageId=14745775
MySQL 에서 database(Ex: testdb) 를 생성하면 다음 순서로 진행된다.
- my.cnf 에 설정된 datadir하위에 database 이름의 directory 생성
- 해당 database 내에 table 생성시 table명으로 파일이 생성된다.
예로 RHEL/CentOS 용으로 패키징된 MySQL 의 경우 datadir 은 /var/lib/mysql 가 되므로
/var/lib/mysql/testdb/ 디렉토리가 생기고 다음과 같은 테이블을 생성할 경우 /var/lib/mysql/testdb/test_tbl.frm 같이 tablename.frm 파일이 생성된다.
MySQL 에서 테이블 사용시 Windows 에서는 대소문자 구분이 안 되는데 Linux나 Un*x 계열에서는 대소문자 구분을 해야 하는 이유는 바로 table 과 database 명이 directory와 file 명이기 때문이다.
Windows 에서는 디렉토리와 파일에 접근할때 대소문자 구분을 하지 않으나 Linux/Unix 는 구분하므로 select 나 insert 시에 테이블의 대소문자를 구분하게 된다.
설정값은 다음과 같이 3가지로 (http://dev.mysql.com/doc/refman/5.5/en/identifier-case-sensitivity.html)
Value | Meaning |
---|---|
0 | SELECT 나 Insert 사용시에도 대소문자를 구분해서 사용해야 한다. 대소문자를 구별하는 OS 에서만 의미가 있고 Windows/Mac OS X 에는 적용되지 않는다 |
1 | 테이블과 DB 이름을 소문자로 생성하며 참조시에는 소문자로 변경하여 처리한다. 기존에 대문자가 포함되어 생성한 테이블과 DB 는 문제가 될 수 있다. |
2 | 참조시에는 소문자로 변경한다. 대소문자를 구분하지 않는 파일 시스템을 가진 OS(Mac OS X) 에서만 동작한다. |
현재 설정값은 다음 variable 을 확인하면 된다.
my.cnf 에 다음 옵션을 넣어주고 재구동하면 table name과 database name 을 소문자로 저장하고 찾을때 대소문자 구분을 하지 않으므로 SQL 문에서 table과 database 를 대소문자 구분없이 사용할 수 있다.
lower_case_table_names 를 1로 설정해도 기존에 생성한 데이타베이스와 테이블은 대소문자를
구분하므로 기존 테이블과 DB 의 이름을 변경해야 한다.
your_schema_name 에 DB 이름을 넣고 다음 쿼리를 수행하면 rename 구문을 만들어 준다. (http://stackoverflow.com/questions/1262258/mysql-case-sensitive-tables-conversion)
'DB관련 > MySQL' 카테고리의 다른 글
윈도우 mysql install 디렉토리 와 Data디텍토리 위치 (0) | 2017.11.11 |
---|---|
MySQL DB Table OPTIMIZE 저장 공간 줄이기 (Storage Shrink 처리) (0) | 2017.11.01 |
[펌]MySQL 쓰면서 하지 말아야 할 것 17가지 (0) | 2017.08.25 |
MySQL 프로세스 리스트 보기 , 프로세스 죽이기. (0) | 2017.04.20 |
QUARTER별 쿼리 만들기 ( 쿼터별 리포트 ) (0) | 2016.09.29 |
MySQL 인코딩 UTF-8 설정하기 (한글 깨짐 문제) (0) | 2016.05.17 |
SQLyog 한글 깨짐 방지 (0) | 2015.07.21 |
Mysql 수동 commit 처리 ( auto_commit 막기) (0) | 2014.11.01 |
(로그인하지 않으셔도 가능)