首页数据库MySQL中大小写不敏感怎样配置,操作是什么

MySQL中大小写不敏感怎样配置,操作是什么

时间2024-03-22 02:23:03发布访客分类数据库浏览1423
导读:这篇文章主要介绍了title,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望大家通过这篇文章可以有所收获。 mysql设置大小写不敏感的方法:1、打开并编辑“my.cnf”文件;2、查找“low...
这篇文章主要介绍了title,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望大家通过这篇文章可以有所收获。


     


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中大小写不敏感怎样配置,操作是什么已经有了进一步的了解。大家如果还想学习更多知识,欢迎关注网络,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: MySQL中大小写不敏感怎样配置,操作是什么
本文地址: https://pptw.com/jishu/649896.html
MySQL中如何让除法计算保留两位小数 MySQL中in查询的基础用法是什么,IN子查询怎样做

游客 回复需填写必要信息