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 22 MySQL
Mysql基础之常见函数
Apr 22 MySQL
MySQL 逻辑备份与恢复测试的相关总结
May 14 MySQL
浅谈MySQL表空间回收的正确姿势
Oct 05 MySQL
MySQL中varchar和char类型的区别
Nov 17 MySQL
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
千万级用户系统SQL调优实战分享
Mar 03 MySQL
一次SQL如何查重及去重的实战记录
Mar 13 MySQL
MySQL中JOIN连接的基本用法实例
Jun 05 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 MySQL
postgresql如何找到表中重复数据的行并删除
May 08 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入门
2006/10/09 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
jquery 操作DOM案例代码分享
2012/04/05 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
Python 字符串池化的前提
2020/07/03 Python
大韩航空官方网站:Korean Air
2017/10/25 全球购物
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
中式面点餐厅创业计划书
2014/01/29 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
2014年安全生产责任书
2014/07/22 职场文书
电影圆明园观后感
2015/06/03 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android