我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中大小写敏感设置方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中大小写敏感设置方法

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中大小写敏感设置方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql中怎么设置大小写不敏感

这篇文章主要介绍了mysql中怎么设置大小写不敏感的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql中怎么设置大小写不敏感文章都会有所收获,下面我们一起来看看吧。mysql设置大小写不敏感原理与参数mys
2023-07-06

mysql中如何设置大小写不敏感

目录mysql设置大小写不敏感原理与参数修改前准备正式设置 mysql大小写不敏感,设置不生效的解决解决思路总结mysql设置大小写不敏感原理与参数mysql大小写敏感配置与两个参数相关 —— lower_cas
2023-04-12

MySQL大小写敏感的处理方式

MySQL大小写敏感的处理方式及代码示例MySQL是一种常用的关系型数据库管理系统,它在处理大小写敏感的问题时需要特别注意。在MySQL中,默认情况下是大小写不敏感的,即不区分大小写。但有时候我们需要进行大小写敏感的处理,这时可以通过以下
MySQL大小写敏感的处理方式
2024-03-15

MySQL 字符类型大小写敏感

mysql字符类型默认是不区分大小写的,即select * from t where name='AAA'与='aaa'没区别,以下是测试的例子(root@localhost)[hello]> create table test1(id i
2022-05-15

MySQL大小写敏感的注意事项

目录MySQL的大小写敏感是由参数控制的MySQL大小写敏感如何设置开发注意事项总结由于这个原因,在阿里巴巴规约中这样要求:【强制】表名、字段名必须使用小写字母或数字 , 禁止出现数字开头,禁止两个下划线中间只 出现数字。数据库字段名的修改
2022-05-19

centos下mysql中table大小写改为不敏感

项目由win系统部署到linux系统下,启动项目报错如下:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'jeecg-boot.QRTZ_LOCKS' d
centos下mysql中table大小写改为不敏感
2021-01-12

MYSQL的binary解决mysql数据大小写敏感问题的方法

BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写
2022-11-15

编程热搜

目录