mysql忽略大小写(MySQL大小写敏感的注意事项)
类别:数据库 浏览量:699
时间:2021-10-03 01:59:04 mysql忽略大小写
MySQL大小写敏感的注意事项由于这个原因,在阿里巴巴规约中这样要求:
【强制】表名、字段名必须使用小写字母或数字 , 禁止出现数字开头,禁止两个下划线中间只 出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。
因此,数据库名、 表名、字段名,都不允许出现任何大写字母,避免引起不必要的麻烦。
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为什么用decimal类型(MySQL decimal unsigned更新负数转化为0)
- mysql哪个版本可以下载msi(新手必备之MySQL msi版本下载安装图文详细教程)
- mysql的默认隔离级别(再有人问你MySQL的隔离级别是什么,就把这篇文章发给他!)
- phpstudy怎么升级mysql(phpStudy中升级MySQL版本到5.7.17的方法步骤)
- docker 增大mysql连接数(docker中修改mysql最大连接数及配置文件的实现)
- mysql怎么设置存储记录(MySQL 的一行记录是怎么存储的?)
- mysql语句详解(详解记录MySQL中lower_case_table_names的坑)
- 怎么查看mysql运行日志(通过Query Profiler查看MySQL语句运行时间的操作方法)
- 阿里云mysql如何接入(阿里云服务器安装Mysql数据库的详细教程)
- mysql中数据类型的学习体会(MySQL 实现lastInfdexOf的功能案例)
- mysqlshell日常运维脚本(监控MySQL主从状态的shell脚本)
- mysql 命令与sqlserver的区别大么(MySQL系列之执行SQL 语句时发生了什么?)
- 使用mysqldump命令来备份(linux使用mysqldump+expect+crontab实现mysql周期冷备份思路详解)
- mysql如何修改列的默认值(mysql查询的时候给字段赋默认值操作)
- navicat连接mysql是远程连接吗(详解Navicat远程连接mysql很慢)
- oracle如何用脚本文件创建表空间(MySQL版oracle下scott用户建表语句实例)
- 关于队徽 你了解这些么 二(关于队徽你了解这些么)
- 冬天来了手脚冰凉 真不是因为上辈子你是折翼的天使(冬天来了手脚冰凉)
- 0 1 岁婴儿最强作息指南,照着做养出天使宝宝(01岁婴儿最强作息指南)
- 沪上这16所高校 萌新 礼包开箱 哪一款让你心动(沪上这16所高校萌新)
- 她救了被绑架的他,而这一切竟是一场阴谋...(她救了被绑架的他)
- 冬季养殖这6种阴生植物,方便又好养,你家有么(冬季养殖这6种阴生植物)
热门推荐
- vue如何excel表格上传功能(Vue + iView实现Excel上传功能的完整代码)
- php静态变量的含义(PHP中define 与 const定义常量的区别详解)
- sql join速度慢(SQL Server 使用join all优化 or 查询速度)
- python中内存管理机制(Python中整数的缓存机制讲解)
- vue将弹框抽离成组件(vue3 可拖动的左右面板分割组件实现)
- css3常用特性(css3学习之2D转换功能详解)
- C#类的访问修饰符
- 如何选择自己的网站服务器(网站应该选择哪种服务器比较好?)
- 织梦dedecms自定义表单选项必填修改解决方法(织梦dedecms自定义表单选项必填修改解决方法)
- python协程结果(深入浅析python 协程与go协程的区别)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9