>  기사  >  데이터 베이스  >  mysql运维-lower_case_table_names

mysql运维-lower_case_table_names

韦小宝
韦小宝원래의
2018-02-08 09:54:491436검색

1 소개
MySQL에서 데이터베이스는 데이터 디렉터리의 디렉터리에 해당합니다. 데이터베이스의 각 테이블은 데이터베이스 디렉터리에 있는 적어도 하나의 파일(스토리지 엔진에 따라 여러 개일 수 있음)에 해당합니다. 따라서 사용되는 운영 체제의 대소문자 구분에 따라 데이터베이스 및 테이블 이름의 대소문자 구분이 결정됩니다.
데이터베이스 이름과 테이블 이름은 대부분의 Unix에서는 대소문자를 구분하지만 Windows에서는 대소문자를 구분하지 않습니다. 주목할 만한 예외 중 하나는 Unix를 기반으로 하지만 대소문자를 구분하지 않는 기본 파일 시스템 유형(HFS+)을 사용하는 Mac OS X입니다. 그러나 Mac OS X은 Unix와 마찬가지로 대소문자를 구분하는 UFS 볼륨도 지원합니다.
lower_case_file_system 변수는 데이터 디렉터리가 위치한 파일 시스템이 파일 이름의 대소문자를 구분하는지 여부를 나타냅니다. ON은 파일 이름이 대소문자를 구분하지 않음을 나타내고, OFF는 대소문자를 구분함을 나타냅니다.

예를 들어 Windows에서 보기:

mysql运维-lower_case_table_names

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입니다.

테이블 이름은 하드 디스크에 소문자로 저장되며 이름 비교에서는 대소문자를 구분하지 않습니다. MySQL은 스토리지 및 조회 테이블에서 모든 테이블 이름을 소문자로 변환합니다. 이 동작은 데이터베이스 이름 및 테이블 별칭에도 적용됩니다. 이 값은 Windows 기본값입니다. 테이블 이름과 데이터베이스 이름은 CREATE TABLE 또는 CREATE DATABASE 문에 지정된 대문자와 소문자를 사용하여 하드 디스크에 저장되지만 MySQL은 조회 테이블에서 이를 소문자로 변환합니다. 이름 비교는 대소문자를 구분하지 않습니다. 즉, 대문자와 소문자로 저장되고 소문자로 비교됩니다. 참고: 대소문자를 구분하지 않는 파일 시스템에만 적용 가능합니다. InnoDB 테이블 이름은 소문자로 저장됩니다. 4 대소문자 구분에서 대소문자 구분으로 변환하는 방법 1. mysqldump를 통해 데이터베이스 데이터를 내보냅니다. 2. my.cnf에서 lower_case_tables_name = 1을 변경하고 mysql 데이터베이스를 다시 시작합니다. 3. 내보낸 데이터를 mysql 데이터베이스로 가져옵니다.
                  저장 CREATE TABLE 또는 CREATE DATABASE 문에 지정된 대문자와 소문자를 사용하여 하드 디스크의 테이블 이름과 데이터베이스 이름을 입력합니다. 이름 비교는 대소문자를 구분합니다. Windows 또는 Mac OS와 같이 대소문자를 구분하지 않는 운영 체제에서는 이 매개변수를 0으로 설정할 수 없습니다. MyISAM 테이블 이름에 대문자와 소문자로 액세스하면 인덱스가 손상될 수 있습니다.

1
2
원래 생성된 라이브러리와 테이블이 대소문자를 구분하고, 이를 대소문자를 구분하지 않도록 변환하려면 주로 다음을 수행해야 합니다. 다음 3단계:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.