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 重命名表的操作方法及注意事项
May 21 MySQL
mysql外连接与内连接查询的不同之处
Jun 03 MySQL
MySQL为id选择合适的数据类型
Jun 07 MySQL
浅谈MySQL user权限表
Jun 18 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
关于mysql中时间日期类型和字符串类型的选择
Nov 27 MySQL
MySQL创建表操作命令分享
Mar 25 MySQL
MySQL库表太大怎么办? 数据库分库分表项目实践
Apr 11 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
MySQL 自动填充 create_time 和 update_time
May 20 MySQL
MySQL中dd::columns表结构转table过程及应用详解
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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
PHP 编程的 5个良好习惯
2009/02/20 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
PHP如何使用Memcached
2016/04/05 PHP
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
Python全局变量操作详解
2015/04/14 Python
Python实现将xml导入至excel
2015/11/20 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
台湾森森购物网:U-mall
2017/10/16 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
干部下基层实施方案
2014/03/14 职场文书
学生会竞聘书范文
2014/03/31 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
2015年采购员工作总结
2015/04/27 职场文书
初三化学教学反思
2016/02/22 职场文书