mysql에서 대소문자 구분을 설정하는 방법: 1. "my.cnf" 파일을 열고 편집합니다. 2. "lower_case_table_names" 항목을 찾아 해당 항목의 값을 "1"로 설정합니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, mysql8 버전, Dell G3 컴퓨터.
1. 원리 및 매개변수
mysql 대소문자 구분 구성은 lower_case_file_system 및 lower_case_table_names
mysql의 현재 대소문자 구분 구성 보기
show global variables like '%case%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | ON | | lower_case_table_names | 0 | +------------------------+-------+
lower_case_file_system을 나타냅니다. 대소문자 구분 여부(ON은 구분하지 않음, OFF는 구분함), 읽기 전용 매개변수이며 수정할 수 없습니다.
lower_case_table_names: 테이블 이름이 대소문자를 구분하고 수정될 수 있는지 여부를 나타냅니다.
lower_case_table_names = 0, mysql은 대소문자를 구분하는 테이블 이름을 기반으로 직접 작동합니다.
lower_case_table_names = 1, mysql은 작업을 수행하기 전에 먼저 테이블 이름을 소문자로 변환합니다.
2. 수정 전 준비
lower_case_table_names = 1
로 인해 mysql은 테이블 생성 시 먼저 테이블 이름을 소문자로 변환하므로 대소문자 구분을 설정한 후에는 테이블 이름을 찾을 수 없습니다. Oracle이 자동으로 test를 대문자로 변환하기 때문에 Oracle이 테이블을 생성하고 create table "test"를 쓴 다음 select * from test를 사용하여 이를 찾는 것처럼 느껴집니다.
그러므로 먼저 라이브러리의 모든 테이블 이름을 소문자로 변경해야 합니다. mysql에는 내장된 메소드가 없으므로 저장 프로시저를 작성하여 수정할 수 있습니다.
DELIMITER // DROP PROCEDURE IF EXISTS lowercase // CREATE PROCEDURE lowercase(IN dbname VARCHAR(200)) BEGIN DECLARE done INT DEFAULT 0; DECLARE oldname VARCHAR(200); DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERE table_schema = dbname; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN cur; REPEAT FETCH cur INTO oldname; SET @newname = LOWER(oldname); #IF newname equals to oldname, do nothing; #select 'a' <> 'A'; -> 0 #select 'a' <> BINARY 'A'; -> 1 SET @isNotSame = @newname <> BINARY oldname; IF NOT done && @isNotSame THEN SET @SQL = CONCAT('rename table ',oldname,' to ',@newname); PREPARE tmpstmt FROM @SQL; EXECUTE tmpstmt; DEALLOCATE PREPARE tmpstmt; END IF; UNTIL done END REPEAT; CLOSE cur; END // DELIMITER ; #调用存储过程 #call lowercase('TEST'); #TEST为你想要修改的数据库的名称
3. 공식 설정
vi my.cnf 파일, lower_case_table_names = 1로 설정, mysql을 다시 시작한 후 적용됩니다
vi my.cnf #添加 lower_case_table_names = 1
[관련 권장 사항: mysql 비디오 튜토리얼]
위 내용은 mysql에서 대소 문자를 구분하지 않도록 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!