您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)mysql怎么設(shè)置大小寫(xiě)不敏感,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
mysql設(shè)置大小寫(xiě)不敏感的方法:
1、打開(kāi)并編輯“my.cnf”文件;
2、查找“l(fā)ower_case_table_names”項(xiàng),將該項(xiàng)的值設(shè)置為“1”;
3、重啟mysql即可。
本教程操作環(huán)境:linux5.9.8系統(tǒng)、mysql8版本、Dell G3電腦。
一、 原理與參數(shù)
mysql大小寫(xiě)敏感配置與兩個(gè)參數(shù)相關(guān) —— lower_case_file_system 和 lower_case_table_names
查看當(dāng)前mysql的大小寫(xiě)敏感配置
show global variables like '%case%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | ON | | lower_case_table_names | 0 | +------------------------+-------+
lower_case_file_system:表示當(dāng)前系統(tǒng)文件是否大小寫(xiě)敏感(ON為不敏感,OFF為敏感),只讀參數(shù),無(wú)法修改。
lower_case_table_names:表示表名是否大小寫(xiě)敏感,可以修改。
lower_case_table_names = 0時(shí),mysql會(huì)根據(jù)表名直接操作,大小寫(xiě)敏感。
lower_case_table_names = 1時(shí),mysql會(huì)先把表名轉(zhuǎn)為小寫(xiě),再執(zhí)行操作。
二、 修改前準(zhǔn)備
由于lower_case_table_names = 1
時(shí),mysql會(huì)先把表名轉(zhuǎn)為小寫(xiě),如果建表時(shí)表名是大寫(xiě)的,設(shè)置完大小寫(xiě)不敏感后就會(huì)查不到。感覺(jué)類(lèi)似Oracle建表寫(xiě)create table "test" 之后用select * from test就查不到,因?yàn)镺racle自動(dòng)把test轉(zhuǎn)成了大寫(xiě)。
所以我們需要先把庫(kù)里所有表名改為小寫(xiě)。mysql中沒(méi)有自帶方法,可以寫(xiě)個(gè)存儲(chǔ)過(guò)程修改。
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 ; #調(diào)用存儲(chǔ)過(guò)程 #call lowercase('TEST'); #TEST為你想要修改的數(shù)據(jù)庫(kù)的名稱(chēng)
三、正式設(shè)置
vi my.cnf文件,設(shè)置 lower_case_table_names = 1 ,重啟mysql后生效
vi my.cnf #添加 lower_case_table_names = 1
關(guān)于mysql怎么設(shè)置大小寫(xiě)不敏感就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。