MySQL中大小写敏感设置方法
admin
2023-05-16 19:22:18
0

本文主要给大家简单讲讲MySQL中大小写敏感设置方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL中大小写敏感设置方法这篇文章可以给大家带来一些实际帮助。

如果根据关键字case来搜索,会发现有两个参数。

mysql> show variables like '%case%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.01 sec)

  其中第一个参数是系统路径是否大小写敏感,我们暂时跳过,看看第二个参数lower_case_table_names,它的含义 0:区分大小写,1:不区分大小写 。
  大小写的敏感问题,在MySQL大体会分为两种类别,在Linux和Windows平台。
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 
   1、数据库名与表名是严格区分大小写的; 
   2、表的别名是严格区分大小写的; 
   3、列名与列的别名在所有的情况下均是忽略大小写的; 
   4、变量名也是严格区分大小写的; 

而Windows下的MySQL却是大小写不敏感的,所有表名和数据库名都会变成小写。
比如我们创建表test_tab,然后插入两行记录,继续开启测试。

create table test_tab(id int,name varchar(64));
insert into test_tab values(1,'aa'),(2,'bb');

在默认的情况下,是开启了大小写敏感的,这样一来test_tab,TEST_TAB是完全不同的两个对象。

mysql> select id,name from TEST_TAB;
ERROR 1146 (42S02): Table 'test.TEST_TAB' doesn't exist
mysql> 
而在列级别,MySQL是不区分大小写的。
mysql> select id,NAMe from test_tab;
+------+---------+
| id   | NAMe    |
+------+---------+
|    1 | aa      |
|    2 | newtest |
+------+---------+
2 rows in set (0.00 sec)
如果要修改大小写敏感的设置,比如设置为大小写不敏感,需要设置参数值,然后重启。

mysql> set global lower_case_table_names=on;
ERROR 1238 (HY000): Variable 'lower_case_table_names' is a read only variable

  重启后,test_TAB和原来的test_tab就是一个意思了。
mysql> desc test_TAB;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(64) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
而如果在大小写敏感的情况下切换就很容易出现问题。

尤其需要注意这种兼容性的问题,如果对于存储过程等还存在疑虑,也可以开启测试模式。


delimiter //
drop procedure if exists `test_proc` //
create procedure test_proc(in push_id char(64))
begin
 update Test.test_tab set name='test' where id=2;
end
//
delimiter ;

mysql> call test_proc('newtest');
Query OK, 1 row affected (0.00 sec)

mysql> select *from test_tab;
+------+---------+
| id   | name    |
+------+---------+
|    1 | aa      |
|    2 | newtest |
+------+---------+
2 rows in set (0.00 sec)
在这个地方还是要做详细的验收测试,务必已测试结果为准,因为大小写的问题出现了表数据不可访问就很不应该了。

另外额外提一下Oracle里面的大小写问题,Oracle里面在11g有一个默认参数sec_case_sensitive_logon,这个参数的实际应用真是有些悲剧,一来很多客户对这个特性并不喜欢,看似从安全的角度来调控,但似乎带来了更多的问题,有相当一部分是习惯使然,而另外一方面是因为这个参数在11g推出,在12c里面这个参数就过期了,含义也发生了变化,在使用中会有一些理解上的歧义。

  这个参数只能够保证登录用户密码的大小写敏感,其他还是和原来一样,12c中这个参数变了味儿,在新版本中已经过期, 在设置的时候务必需要保证sqlnet.ora中的设置需要兼容,文件中的参数SQLNET.ALLOWED_LOGON_VERSION_SERVER如果是12,12a就需要保证SEC_CASE_SENSITIVE_LOGON不为false

MySQL中大小写敏感设置方法就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的行业资讯。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。       

相关内容

热门资讯

大疆、影石的“师父”,撑不下去... 一则出售消息,让沉寂已久的GoPro股价突然暴涨。北京时间5月12日一早,这家美国运动相机厂商宣布,...
13岁女孩被闺蜜胁迫卖淫,父亲... 2022年6月,魏潇(化名)从得知时年13岁的女儿遭胁迫卖淫开始,便踏上了维权之路。4年来,胁迫其女...
苹果突然官宣!降到史上最低价! 近日 iPhone手机降价的消息刷屏了 网友纷纷发帖称 “零点确定降价了” “苹果坚挺了8个月终于降...
石化机械获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示石化机械(000852)新获得一项实用新型专利授权,专利名为“...
小区2.82亩绿地“被交易”变... 近日,西安市世纪颐园小区业主向华商报大风新闻反映,小区西侧一块原本规划为公共绿地的土地,在多年前被开...
黄仁勋喝蜜雪冰城,品出了什么味... 每经评论员 朱成祥黄仁勋近期到访北京,被拍到在胡同喝豆汁、吃炸酱面、举着蜜雪冰城饮料。他表情轻松,与...
力箭系列率先实现民商火箭“百星... 来源:滚动播报 (来源:千龙网) 昨天(15日)12时33分,中科宇航力箭一号遥十三运载火箭在东风商...
B站独家直播中科院公众科学日:... 央广网北京5月16日消息(记者 殷雨婷)5月16日至17日,中国科学院第22届公众科学日在全国一百余...
飞沃科技获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示飞沃科技(301232)新获得一项实用新型专利授权,专利名为“...
段永平的“本分”哲学,被OPP... 短短几十字的母亲节宣传文案,把OPPO推上了风口浪尖。 5月8日,手机品牌OPPO的官方微博、小红书...