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 05 MySQL
Idea连接MySQL数据库出现中文乱码的问题
Apr 14 MySQL
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
MySQL分库分表与分区的入门指南
Apr 22 MySQL
详解MySQL 联合查询优化机制
May 10 MySQL
详解MySQL多版本并发控制机制(MVCC)源码
Jun 23 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
MySQL去除重叠时间求时间差和的实现
Aug 23 MySQL
mysql主从复制的实现步骤
Oct 24 MySQL
Windows下载并安装MySQL8.0.x 版本的完整教程
Apr 10 MySQL
pt-archiver 主键自增
Apr 26 MySQL
Mysql 一主多从的部署
May 20 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
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
js验证是否为数字的总结
2013/04/14 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
layui分页效果实现代码
2017/05/19 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
Vue如何实现验证码输入交互
2020/12/07 Vue.js
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
python实现的自动发送消息功能详解
2019/08/15 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
工程造价管理专业大专生求职信
2013/10/06 职场文书
高二美术教学反思
2014/01/14 职场文书
关于爱情的广播稿
2014/01/16 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
2014年残联工作总结
2014/11/21 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
三八节活动简报
2015/07/20 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
人民调解协议书
2016/03/21 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python