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'
이에 대한 세 가지 가능한 값이 있습니다.
0
–CREATE TABLE
또는CREATE DATABASE
명세서에 지정된 소문자 . 이름 비교는 대소 문자를 구분합니다.1
-테이블 이름은 디스크에서 소문자로 저장되며 이름 비교는 대소 문자를 구분하지 않습니다.2
–CREATE TABLE
또는CREATE DATABASE
문에 지정된 소문자이지만 MySQL은 조회시 소문자로 변환합니다. 이름 비교는 대소 문자를 구분하지 않습니다.
답변
-
에서 파일 찾기
/etc/mysql/my.cnf
-
다음 줄을 추가하여 파일을 편집하십시오.
[mysqld]
lower_case_table_names=1
-
sudo /etc/init.d/mysql restart
-
실행하는
mysqladmin -u root -p variables | grep table
것을 확인 할 수lower_case_table_names
있다1
지금
작동하려면이 테이블을 다시 작성해야 할 수도 있습니다.