加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql怎么设定大小写不敏感

发布时间:2023-06-17 13:53:22 所属栏目:MySql教程 来源:
导读:这篇文章将为大家详细讲解有关mysql怎么设置大小写不敏感,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。mysql设置大小写不敏感的方法:1、打开并编辑“my

这篇文章将为大家详细讲解有关mysql怎么设置大小写不敏感,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

mysql设置大小写不敏感的方法:

1、打开并编辑“my.cnf”文件;

2、查找“lower_case_table_names”项,将该项的值设置为“1”;

3、重启mysql即可。

本教程操作环境:linux5.9.8系统、mysql8版本、Dell G3电脑。

一、 原理与参数

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会先把表名转为小写,再执行操作。

二、 修改前准备

由于lower_case_table_names = 1时,mysql会先把表名转为小写,如果建表时表名是大写的,设置完大小写不敏感后就会查不到。感觉类似Oracle建表写create table "test" 之后用select * from test就查不到,因为Oracle自动把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为你想要修改的数据库的名称

三、正式设置

vi my.cnf文件,设置 lower_case_table_names = 1 ,重启mysql后生效

vi my.cnf

#添加

lower_case_table_names = 1

关于mysql怎么设置大小写不敏感就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!