2010-04-28 2 views
7

우리의 대상 환경은 Linux이므로 기본적으로 mysql은 대소 문자를 구분합니다. 나는 lower_case_table_names 변수로 대소 문자를 구분하지 않고 우리의 리눅스 환경을 만들 수 있다는 것을 알고 있지만 오히려하지 않을 것이다. 우리의 dev 장치가 OSX이고, mysql이 대소 문자를 구분하지 않기 때문에, 케이스 불일치로 몇 번 물었습니다.대소 문자를 구분하지 않는 파일 시스템에서 MySql 테이블 이름 대소 문자를 구분하도록 할 수 있습니까?

OSX 설치시 MySql (5.0.83이 중요하다면)에서 대소 문자를 구분하도록 강제 할 수있는 방법이 있습니까? 예를 들어 리눅스에서 실행되는 통합 서버에 배포하기 전에 테이블 이름 대소 문자가 일치하도록해야합니다 ?

답변

-1

여기서 가장 좋은 방법은 충돌이 발생하지 않도록 테이블 이름을 수정하는 것입니다. 사례별로 차별화하는 것은 좋지 않은 생각이며 혼란을 낳을 수 있습니다 (아시다시피).

하지만 생성하는 동안 테이블 이름 주위에 작은 따옴표를 사용해보십시오. 이 기능은 SUSE/Linux/MySQL 5.0에서 Windows에서 실행되는 쿼리 브라우저와 함께 작동합니다.

CREATE TABLE `MySchema`.`test` (
    `COMMENT` text 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


CREATE TABLE `MySchema`.`Test` (
    `COMMENT` text 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

insert into MySchema.test values ('this is table test'); 
insert into MySchema.Test values ('this is table Test'); 


select * from MySchema.test; 
select * from MySchema.Test; 

대소 문자를 구분하지 않는 클라이언트가 잘못된 대/소문자를 사용하여 테이블을 요청하면 오류를 보냅니 까? MySQL 데이터베이스가 Linux에서 실행되는 경우 오류가 발생한다고 생각합니다.

체크 아웃 this link "Mac OS X은 유닉스 기반이지만 대소 문자를 구분하지 않는 기본 파일 시스템 유형 (HFS +)을 사용합니다. 그러나 Mac OS X은 다음과 같은 UFS 볼륨도 지원합니다. 대문자와 소문자가 구별됩니다. "

+1

우리의 테이블 이름이 충돌하지 않는 : 테이블은 이제 대소 문자를 구분해야한다 /usr/local/Cellar/mysql/<version>/my.cnf

쿼리와 함께. 그러나 때로는 테이블 이름을 잘못 인식하는 코드가 있으며, 기본 OS X 파일 시스템의 대소 문자를 구별하지 않으므로 Linux에 배포 할 때까지는 버그가 표시되지 않습니다. –

1

lower_case_table_names=0my.cnf으로 설정하십시오. 당신이 사제를 통해 설치 한 경우

는, 파일은 여기에 있습니다 : mysql> select count(*) from user; ERROR 1146 (42S02): Table 'xxx.user' doesn't exist mysql> select count(*) from User; +----------+ | count(*) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec)