您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mysql如何设置大小写不敏感

2024/3/6 8:48:13发布32次查看
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视频教程】
以上就是mysql如何设置大小写不敏感的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product