MySQL大小写敏感的注意事项


Posted in MySQL onMay 24, 2021

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

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

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

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     |
+------------------------+-------+

参数说明如下:

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

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

2.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大小写敏感如何设置

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

lower_case_table_names = 0 或 lower_case_table_names = 1

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

开发注意事项

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

总结

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

以上就是MySQL大小写敏感的注意事项的详细内容,更多关于MySQL大小写敏感的资料请关注三水点靠木其它相关文章!

MySQL 相关文章推荐
mysql批量新增和存储的方法实例
Apr 07 MySQL
MySQL的join buffer原理
Apr 29 MySQL
MySQL中distinct与group by之间的性能进行比较
May 26 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
MySQL面试题讲解之如何设置Hash索引
Nov 01 MySQL
一次SQL如何查重及去重的实战记录
Mar 13 MySQL
Mysql超详细讲解死锁问题的理解
Apr 01 MySQL
Innodb存储引擎中的后台线程详解
Apr 03 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 MySQL
MySQL 使用事件(Events)完成计划任务
May 24 #MySQL
MySQL触发器的使用
May 24 #MySQL
MySQL 重命名表的操作方法及注意事项
May 21 #MySQL
Mysql官方性能测试工具mysqlslap的使用简介
May 21 #MySQL
MySQL官方导出工具mysqlpump的使用
May 21 #MySQL
新手必备之MySQL msi版本下载安装图文详细教程
MySQL数据库压缩版本安装与配置详细教程
You might like
用PHP来写记数器(详细介绍)
2006/10/09 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
python中函数传参详解
2016/07/03 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
jupyter notebook 多行输出实例
2020/04/09 Python
150行python代码实现贪吃蛇游戏
2020/04/24 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
财产保全担保书范文
2014/04/01 职场文书
保护环境倡议书100字
2014/05/19 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
销售员自我评价
2015/03/11 职场文书
公司出纳岗位职责
2015/03/31 职场文书
Golang日志包的使用
2022/04/20 Golang
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL