1 소개
MySQL에서 데이터베이스는 데이터 디렉터리의 디렉터리에 해당합니다. 데이터베이스의 각 테이블은 데이터베이스 디렉터리에 있는 적어도 하나의 파일(스토리지 엔진에 따라 여러 개일 수 있음)에 해당합니다. 따라서 사용되는 운영 체제의 대소문자 구분에 따라 데이터베이스 및 테이블 이름의 대소문자 구분이 결정됩니다.
데이터베이스 이름과 테이블 이름은 대부분의 Unix에서는 대소문자를 구분하지만 Windows에서는 대소문자를 구분하지 않습니다. 주목할 만한 예외 중 하나는 Unix를 기반으로 하지만 대소문자를 구분하지 않는 기본 파일 시스템 유형(HFS+)을 사용하는 Mac OS X입니다. 그러나 Mac OS X은 Unix와 마찬가지로 대소문자를 구분하는 UFS 볼륨도 지원합니다.
lower_case_file_system 변수는 데이터 디렉터리가 위치한 파일 시스템이 파일 이름의 대소문자를 구분하는지 여부를 나타냅니다. ON은 파일 이름이 대소문자를 구분하지 않음을 나타내고, OFF는 대소문자를 구분함을 나타냅니다.
예를 들어 Windows에서 보기:
Windows 시스템은 대소문자를 구분하지 않으며 mysql도 기본적으로 대소문자를 구분하지 않도록 설정되어 있음을 의미합니다.
2 대소문자 구분 규칙
Linux에서:
데이터베이스 이름과 테이블 이름은 엄격하게 대소문자를 구분합니다.
테이블 별칭은 대소문자를 엄격하게 구분합니다.
열 이름과 열 별칭은 모든 경우에 엄격하게 대소문자를 구분합니다. 다음은 대소문자를 구분하지 않습니다.
변수 이름도 엄격하게 대소문자를 구분합니다.
Windows에서는
대소문자를 구분하지 않습니다.
Mac OS(비 UFS 볼륨)에서는 대소문자를 구분하지 않습니다.
3 설명(lower_case_table_names) unix에서는 lower_case_table_names의 기본값이 0입니다. Windows에서는 기본값이 1입니다. Mac OS X에서는 기본값은 2입니다.
저장 CREATE TABLE 또는 CREATE DATABASE 문에 지정된 대문자와 소문자를 사용하여 하드 디스크의 테이블 이름과 데이터베이스 이름을 입력합니다. 이름 비교는 대소문자를 구분합니다. Windows 또는 Mac OS와 같이 대소문자를 구분하지 않는 운영 체제에서는 이 매개변수를 0으로 설정할 수 없습니다. MyISAM 테이블 이름에 대문자와 소문자로 액세스하면 인덱스가 손상될 수 있습니다. | 1 |
2 | |
원래 생성된 라이브러리와 테이블이 대소문자를 구분하고, 이를 대소문자를 구분하지 않도록 변환하려면 주로 다음을 수행해야 합니다. 다음 3단계: | 1. mysqldump를 통해 데이터베이스 데이터를 내보냅니다.
5 Notes
대문자 사용으로 인한 문제를 방지하기 위해 권장되는 명명 규칙은 데이터베이스, 테이블, 열을 정의할 때 소문자와 밑줄을 모두 사용하고 대문자를 사용하지 않는 것입니다.
모든 시스템에서 lower_case_tables_name=1을 사용할 수 있습니다. 이 옵션을 사용할 때의 단점은 SHOW TABLES 또는 SHOW DATABASES를 사용할 때 이름이 원래 대문자인지 소문자인지 확인할 수 없다는 것입니다.
Unix에서는 lower_case_tables_name을 1로 설정하기 전에 lower_case_tables_name = 0인 경우 mysqld를 다시 시작하기 전에 이전 데이터베이스 이름과 테이블 이름을 소문자로 변환해야 한다는 점에 유의하세요.
관련 권장 사항:
Mysql의 my.ini에 lower_case_table_names = 0을 추가하여 테이블의 _MySQL
위 내용은 mysql运维-lower_case_table_names의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!