iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL到底大小写敏感还是不敏感?
  • 538
分享到

MySQL到底大小写敏感还是不敏感?

mysql数据库sql 2023-09-09 13:09:54 538人浏览 薄情痞子
摘要

目录 一、MySQL是大小写敏感的吗 二、MySQL的大小写敏感是由参数控制的 三、MySQL大小写敏感如何设置 四、开发注意事项 五、总结 一、Mysql是大小写敏感的吗 在工作中,大家可能遇到过在本机开发的程序运行一切正常,发布到服

目录

一、MySQL是大小写敏感的吗

二、MySQL的大小写敏感是由参数控制的

三、MySQL大小写敏感如何设置

四、开发注意事项

五、总结


一、Mysql是大小写敏感的吗

在工作中,大家可能遇到过在本机开发的程序运行一切正常,发布到服务器后就出现表名找不到的问题,或者当想要查询一条数据时,总是会多出来两条或多条,这其实是因为mysql设置了大小写敏感造成的。Mysqlwindows下不区分大小写,但在linux下默认是区分大小写的,如果你稍不注意,就会出现上述问题。

由于这个原因,在阿里巴巴规约中这样要求:

【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。

因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免引起不必要的麻烦。

二、MySQL的大小写敏感是由参数控制的

mysql大小写敏感配置相关的两个参数,lower_case_file_system和lower_case_table_names。

查看当前mysql的大小写敏感配置,可以使用如下语句

show global variables like '%lower_case%';+------------------------+-------+| Variable_name          | Value |+------------------------+-------+| lower_case_file_system | ON    || lower_case_table_names | 0     |+------------------------+-------+

参数说明如下:

lower_case_file_system,代表当前系统文件是否大小写敏感,只读参数,无法修改。ON 大小写不敏感,OFF 大小写敏感。

  • 此变量描述数据所在的操作系统的文件目录是否区分大小写。 OFF表示文件名区分大小写,ON表示它们不区分大小写。此变量是只读的,因为它反映了文件系统的属性,设置它对文件系统没有影响。

lower_case_table_names,代表库表名是否大小写敏感,可以修改,参数有0、1、2三种。

  • 0 大小写敏感。(Unix,Linux默认) 创建的库表将原样保存在磁盘上。如create database TeSt;将会创建一个TeSt的目录,create table AbCCC …将会原样生成AbCCC.frm文件,SQL语句也会原样解析。
  • 1 大小写不敏感。(Windows默认) 创建的库表时,MySQL将所有的库表名转换成小写存储在磁盘上。 SQL语句同样会将库表名转换成小写。 如需要查询以前创建的Testtable(生成Testtable.frm文件),即便执行select * from Testtable,也会被转换成select * from testtable,致使报错表不存在。
  • 2 大小写不敏感(OS X默认) 创建的库表将原样保存在磁盘上, 但SQL语句将库表名转换成小写。

 测试:

数据库:MySQL 5.7.22

参数:lower_case_table_names=0

(1)查看参数值

(2)创建test表,并插入一条数据

 (3)查询不同大小写的表名,对比两组查询,可以知linux下,mysql默认对表名大小写敏感。

(4)利用‘Aa’和‘aa’查询出相同的结果,说明查询时对字段内容进行了转换(大写转换成小写),造成了这一现象。 

(5)对字段‘Name'也可查询结果,表明在查询时对字段的大小写不敏感。

综合以上几个Case可得出如下结论:

①linux默认情况下,对数据库名和表名的大小写是敏感的,因为linux系统本身对大小写就敏感。

②字段内容大小写不敏感。

③列名大小写不敏感。

字段内容及列名大小写不敏感的解决方案

①创建表时,将字段标记为binary,二进制大小写是敏感的。

②在查询条件的字段前加binary,但是不建议这么做,因为会使字段索引失效。

③建表时设置校对规则(collate)。

collate规则:

*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写。

*_ci: case insensitive collation,不区分大小写 。

④如果建表时校对规则未用*_bin,则可直接修改字段的属性。

alter table test3 modify name varchar(20) collate utf8_bin;

 只要在创建表的时候指定collate为utf8_bin,就可以实现大小写敏感,如果建表时未指定,则可修改字段的校对规则,也可以实现大小写敏感。

三、MySQL大小写敏感如何设置

在Linux系统中修改my.cnf文件,在Windows下修改my.ini文件,新增或修改以下内容。

lower_case_table_names = 0 或 lower_case_table_names = 1

然后重启MySQL服务才可以生效。

四、开发注意事项

  1. 如果要将lower_case_table_names从0(敏感)修改为1(不敏感)时,必须先对旧数据表的表名进行处理,把所有数据库的表名先改为小写,最后再设置lower_case_table_names为1,否则依然会出现无法找到表名的问题。
  2. 在Windows上lower_case_table_names默认值为1(不敏感),在MacOS上默认值为2(不敏感)。在Linux上不支持值2,服务器强制该值为0(敏感)。
  3. 如果在数据目录驻留在不区分大小写的文件系统(例如Windows或macOS)上,则不应将lower_case_table_names设置为0,否则将出现MySQL服务无法启动的问题。

五、总结

由于操作系统不同导致大小写敏感的默认设置不一致,我们在开发时一定要注意,应该养成严格的意识,SQL语句一律采用小写字母,避免无意义的踩坑。

MySQL是日常工作中使用最对的数据库之一,所以必须要要较为深入和全面的掌握,对于高阶人员还要掌握分布式事务、各种数据库、传播机制等。

欢迎访问个人博客Jackin's Blog 

来源地址:https://blog.csdn.net/qq_35273918/article/details/126703855

您可能感兴趣的文档:

--结束END--

本文标题: MySQL到底大小写敏感还是不敏感?

本文链接: https://www.lsjlt.com/news/401551.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • MySQL到底大小写敏感还是不敏感?
    目录 一、MySQL是大小写敏感的吗 二、MySQL的大小写敏感是由参数控制的 三、MySQL大小写敏感如何设置 四、开发注意事项 五、总结 一、MySQL是大小写敏感的吗 在工作中,大家可能遇到过在本机开发的程序运行一切正常,发布到服...
    99+
    2023-09-09
    mysql 数据库 sql
  • mysql 大小写敏感问题
    mysql关于大小写敏感的话题有以下三个: ...
    99+
    2024-04-02
  • mysql大小写敏感设置
    一.mysql大小写敏感设置 停止MySQL服务器 [root@localhost ~]# systemctl stop mysqld 修改mysql配置,添加lower_case_table_nam...
    99+
    2023-09-07
    mysql 服务器 数据库
  • linux大小写是否敏感
    今天小编给大家分享一下linux大小写是否敏感的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-03-10
    linux
  • mysql怎么设置大小写不敏感
    这篇文章将为大家详细讲解有关mysql怎么设置大小写不敏感,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。mysql设置大小写不敏感的方法:1、打开并编辑“m...
    99+
    2024-04-02
  • mysql中如何设置大小写不敏感
    目录mysql设置大小写不敏感原理与参数修改前准备正式设置 mysql大小写不敏感,设置不生效的解决解决思路总结mysql设置大小写不敏感 原理与参数 mysql大小写敏感配置与两个参数相关 —&m...
    99+
    2023-04-12
    mysql设置大小写 大小写不敏感 mysql大小写不敏感
  • mysql如何修改为大小写不敏感?
    我们有时会面临需要对mysql数据库设置为大小写不敏感,比较常见的例如:在Linux下,MySQL的表名区分大小写,而在Windows下是不区分,有时候在Linux上查询大写表名时就会出现找不到表的情...
    99+
    2023-09-01
    mysql 数据库 linux
  • mysql中怎么设置大小写不敏感
    这篇文章主要介绍了mysql中怎么设置大小写不敏感的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql中怎么设置大小写不敏感文章都会有所收获,下面我们一起来看看吧。mysql设置大小写不敏感原理与参数mys...
    99+
    2023-07-06
  • MySQL是否支持大小写不敏感的查询
    MySQL是否支持大小写不敏感的查询,需要具体代码示例 在实际的开发中,我们经常会遇到需要查询不区分大小写的情况。MySQL是一种常用的关系型数据库管理系统,是否支持大小写不敏感的查询...
    99+
    2024-03-15
    mysql 查询 大小写
  • MySQL大小写敏感问题分析
    这篇文章主要介绍“MySQL大小写敏感问题分析”,在日常操作中,相信很多人在MySQL大小写敏感问题分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL大小写敏感问题...
    99+
    2024-04-02
  • MySQL数据库对大小写敏感吗?
    MySQL数据库对大小写敏感吗?需要具体代码示例 在使用MySQL数据库时,有时会遇到大小写敏感的问题,即在查询、插入或更新数据时,不同大小写的情况可能会导致不同的结果。MySQL数据...
    99+
    2024-04-02
  • MySQL大小写敏感的处理方式
    MySQL大小写敏感的处理方式及代码示例 MySQL是一种常用的关系型数据库管理系统,它在处理大小写敏感的问题时需要特别注意。在MySQL中,默认情况下是大小写不敏感的,即不区分大小写...
    99+
    2024-03-15
    mysql 处理 大小写敏感
  • mysql 大小写敏感的配置方法
    在MySQL中,大小写敏感性的配置主要涉及两个参数:lower_case_table_names和collation_server。下面是每个参数的详细说明及配置方法: lower_case_tab...
    99+
    2023-09-07
    mysql 数据库
  • mysql8如何设置大小写不敏感的
    在 MySQL 8 中,数据目录初始化之后,不再允许更改 lower_case_table_names = 1 的 值; MySQL 基于某些原因,禁止在重新启动 MySQL 服务时将lower_ca...
    99+
    2023-09-17
    mysql 数据库 java
  • Windows Mysql8如何设置大小写敏感
    小编给大家分享一下Windows Mysql8如何设置大小写敏感,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!windows系统mysql8.0更改lower_case_table_names...
    99+
    2024-04-02
  • PHP中大小写敏感的示例分析
    这篇文章主要介绍了PHP中大小写敏感的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP 大小写敏感在 PHP 中,所有用户定义的...
    99+
    2024-04-02
  • MYSQL大小写不敏感导致用户登录异常问题
    目录mysql大小写不敏感导致用户登录异常MYSQLV8.0设置大小写不敏感后不能正常启动第一步:查找my.cnf文件位置网友的解决办法总结MYSQL大小写不敏感导致用户登录异常 问题: 注册用户system全部小写,但...
    99+
    2023-04-12
    MYSQL大小写 MYSQL大小写不敏感 MYSQL用户登录异常
  • SQLite中如何处理大小写不敏感的查询
    在SQLite中,可以通过使用COLLATE NOCASE关键字来实现大小写不敏感的查询。例如,可以使用以下语句来查询一个表中的数据...
    99+
    2024-04-02
  • 解决mysql8.0 lower_case_table_names 大小写敏感设置问题
    lower_case_table_names=1 表示 mysql 是不区分大小写的 lower_case_table_names=0 表示 mysql 是区分大小写的 根据网上资料得知mysql8.0之后,lower_case_tab...
    99+
    2023-08-31
    linux mysql Powered by 金山文档
  • 如何解决MySQL大小写敏感导致的问题
    小编给大家分享一下如何解决MySQL大小写敏感导致的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MYSQL对大小写敏感见字...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作