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
MySQL 如何设计统计数据表
Jun 15 MySQL
新手入门Mysql--sql执行过程
Jun 20 MySQL
浅谈mysql增加索引不生效的几种情况
Jun 23 MySQL
MySQL Shell import_table数据导入的实现
Aug 07 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
MySQL高级进阶sql语句总结大全
Mar 16 MySQL
讲解MySQL增删改操作
May 06 MySQL
MySQL批量更新不同表中的数据
May 11 MySQL
MYSQL如何查看操作日志详解
May 30 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
MySQL索引失效场景及解决方案
Jul 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-MySQL教程归纳总结
2008/06/07 PHP
PHP中include()与require()的区别说明
2010/03/10 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
python对url格式解析的方法
2015/05/13 Python
python绘制中国大陆人口热力图
2018/11/07 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
python爬虫可以爬什么
2020/06/16 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
自动化专业本科毕业生求职信
2013/10/20 职场文书
医学检验专业个人求职信范文
2013/12/04 职场文书
40岁生日感言
2014/02/15 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
鸦片战争观后感
2015/06/09 职场文书
2016国庆促销广告语
2016/01/28 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
html粘性页脚的具体使用
2022/01/18 HTML / CSS
Redis实现一个账号只能登录一个设备
2022/04/19 Redis
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android