mysql 대소문자 구분 구성과 관련된 두 개의 매개변수인 lower_case_file_system 및 lower_case_table_names.
mysql의 현재 대소문자 구분 구성 보기
show global variables like '%lower_case%';+------------------------+-------+| Variable_name | Value | +------------------------+-------+| lower_case_file_system | ON | | lower_case_table_names | 0 |+------------------------+-------+
현재 시스템 파일이 대소문자를 구분하는지 여부를 나타냅니다. 이는 수정할 수 없는 읽기 전용 매개변수입니다.
ON 대소문자 구분 안함
OFF 대소문자 구분
lower_case_table_names
테이블 이름이 대소문자를 구분하고 수정 가능한지 여부를 나타냅니다.
lower_case_table_names = 0이면 mysql은 테이블 이름을 기반으로 직접 작동하며 대소문자를 구분합니다.
lower_case_table_names = 1이면 mysql은 작업을 수행하기 전에 먼저 테이블 이름을 소문자로 변환합니다.
lower_case_table_names 값 설정
my.cnf 파일을 열고 다음 명령문을 추가한 후 다시 시작하세요.
lower_case_table_names = 0 或 lower_case_table_names = 1
테이블 사용자 생성
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
테이블 이름은 생성 당시의 대소문자와 일치합니다
으레 ee테이블 이름은 생성 당시의 대소문자와 일치하지 않습니다
select count(*) from user; +----------+| count(*) | +----------+| 0 | +----------+
lower_case_table_names=0인 경우 테이블 이름은 대소문자를 구분합니다.
테이블 이름이 생성 당시의 대소문자와 일치하지 않습니다
select count(*) from User;ERROR 1146 (42S02): Table 'user.User' doesn't exist
테이블 이름이 생성 당시의 대소문자와 일치하지 않습니다
select count(*) from user; +----------+| count(*) | +----------+| 0 | +----------+
lower_case_table_names=1, 테이블 이름은 대소문자를 구분하지 않습니다.
lower_case_table_names=0인 경우 대소문자를 혼합하여 테이블 이름을 만듭니다. lower_case_table_names=1 이후에는 원래 생성된 테이블을 사용할 때 존재하지 않는다는 메시지가 표시됩니다.
첫번째 설정 lower_case_table_names=0
Create table User (대소문자 혼합)
select count(*) from user; +----------+| count(*) | +----------+| 0 | +----------+
그런 다음 lower_case_table_names=1
설정 테이블 이름이 대문자인지 소문자인지 여부 , 둘 다 프롬프트 테이블이 존재하지 않습니다
CREATE TABLE `User` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;show tables; +----------------+| Tables_in_user | +----------------+| User | +----------------+
lower_case_table_names=1 일 때 작업 전 테이블 이름이 소문자로 변환되기 때문에 파일에 소문자 테이블 이름 파일이 전혀 없어 에러가 발생합니다.
lower_case_table_names을 0에서 1로 수정하려면 먼저 기존 데이터 테이블의 테이블 이름을 처리하고 모든 데이터베이스의 테이블 이름을 먼저 소문자로 변경한 후 마지막으로 설정해야 합니다. lower_case_table_names는 1입니다. 그렇지 않으면 위의 문제가 발생합니다.
요약:
운영 체제가 다르면 대소문자 구분이 일관되지 않습니다. 개발할 때 대소문자 구분 원칙에 따라 개발해야 개발된 프로그램이 다양한 운영 체제와 호환될 수 있습니다. 따라서 개발 및 테스트 환경에서는 lower_case_table_names 값을 0으로 설정하여 개발 시 코드의 대소문자 구분을 엄격하게 제어하고 코드의 호환성 및 엄격성을 향상시키는 것이 좋습니다.
이 글에서는 MySQL의 대소문자 구분 구성 문제에 대해 설명합니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트를 참고하세요.
관련 권장 사항:
PHP를 사용하여 배열을 병합하고 키 값을 유지하는 방법
phpcurl을 사용하여 다중 프로세스 다운로드 파일 클래스를 구현하는 방법
php를 사용하여 여부를 결정하는 방법 로컬 및 원격 파일이 존재합니다
위 내용은 mysql 대소문자 구분 구성 문제 해석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!