태그 보관물: mysql5

mysql5

MySQL의 테이블 이름은 대소 문자를 구분합니까? 테이블을 쿼리 할

MySQL의 테이블 이름은 대소 문자를 구분합니까?

내 Windows 개발 컴퓨터에서 내가 가지고있는 코드는 모두 소문자로 보이는 테이블을 쿼리 할 수 ​​있습니다. 데이터 센터의 테스트 서버에 배포하면 테이블 이름이 대문자로 시작하는 것으로 나타납니다.

우리가 사용하는 서버는 모두 우분투에 있습니다.



답변

일반적으로 :

데이터베이스 및 테이블 이름은 Windows에서 대소 문자를 구분하지 않으며 대부분의 Unix 품종에서는 대소 문자를 구분합니다.

MySQL에서 데이터베이스는 데이터 디렉토리 내의 디렉토리에 해당합니다. 데이터베이스 내의 각 테이블은 데이터베이스 디렉토리 내의 하나 이상의 파일에 해당합니다. 결과적으로 기본 운영 체제의 대소 문자 구분은 데이터베이스 및 테이블 이름의 대소 문자 구분에 영향을줍니다.

시스템 변수 lower_case_table_names( [mysqld] 의 my.cnf 구성 파일 에서)를 사용하여 디스크에 테이블 이름을 저장하는 방법을 구성 할 수 있습니다 .

자세한 정보는 10.2.2 식별자 대소 문자 구분 섹션을 읽으십시오 .


답변

데이터베이스 및 테이블 이름은 Windows에서 대소 문자를 구분하지 않으며 대부분의 Unix 또는 Linux에서는 대소 문자를 구분합니다.

문제를 해결하려면 lower_case_table_names를 1로 설정하십시오.

lower_case_table_names = 1

이렇게하면 테이블 작성 방법에 관계없이 모든 테이블을 소문자로 만듭니다.


답변

MySQL의 테이블 이름은 파일 시스템 항목이므로 기본 파일 시스템 인 경우 대소 문자를 구분하지 않습니다.


답변

lower_case_table_names시스템 변수에 따라 다릅니다 .

show variables where Variable_name='lower_case_table_names'

이에 대한 세 가지 가능한 값이 있습니다.

  • 0CREATE TABLE또는 CREATE DATABASE명세서에 지정된 소문자 . 이름 비교는 대소 문자를 구분합니다.
  • 1 -테이블 이름은 디스크에서 소문자로 저장되며 이름 비교는 대소 문자를 구분하지 않습니다.
  • 2CREATE TABLE또는 CREATE DATABASE문에 지정된 소문자이지만 MySQL은 조회시 소문자로 변환합니다. 이름 비교는 대소 문자를 구분하지 않습니다.

선적 서류 비치


답변

  1. 에서 파일 찾기 /etc/mysql/my.cnf

  2. 다음 줄을 추가하여 파일을 편집하십시오.

    [mysqld]

    lower_case_table_names=1

  3. sudo /etc/init.d/mysql restart

  4. 실행하는 mysqladmin -u root -p variables | grep table것을 확인 할 수 lower_case_table_names있다1 지금

작동하려면이 테이블을 다시 작성해야 할 수도 있습니다.


답변