mysql在Linux下大小写敏感设置
默认情况下,mysql在windows下是不区分大小写的,但是mysql在linux下大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、表中字符格式的数据是忽略大小写的,这一点不合理!
针对上面几点,比如按默认配置创建一个数据库test和表dept,表中一条数据(数据库mysql5.7):

那么当我们进行下面操作时,将会报错:
-- 报错1049,库名是test
USE Test;
-- 报错1146,表名是dept
SELECT * FROM Dept;
-- 报错1054,表别名是d
SELECT * FROM dept d WHERE D.`Id`=1;
-- 不报错,但是数据没有区分大小写(like也不区分)
SELECT * FROM dept WHERE NAME='SALE';
这些大小写敏感问题可能让我们这些开发者有点不适应,解决方案如下:
针对上面的1和2两点,我们可以在配置文件中的mysqld节点添加一行配置:
lower_case_table_names = 1
参数解释:0:区分大小写 1:不区分大小写
顺带提一下,这里说下这个配置文件,先进入mysql的主目录,在目录下会有个my.cnf文件,打开查看里面有没有mysqld节点配置,我这里是没有的,里面是:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
想必这两个指的是mysql配置文件的目录,然后分别进入这两个目录,发现/etc/mysql/mysql.conf.d/目录下的mysqld.cnf文件里有mysqld节点配置,然后将上面配置加上(存在则修改)即可:

如果都没有找到mysqld节点,那直接在my.cnf中加上mysqld节点,再将上面的配置加上(存在则修改)即可
修改完成需要重启下mysql服务:service mysql restart
mysql8只能在数据库初始化时才有效,数据库创建好之后就不能修改大小写敏感设置了,这一点着实有点坑人
第3点是正常的,我们也是希望列名与列的别名不区分大小写,但是第4点太不正常了,解决方案如下:
如果我们还没有建表,那么可以在建表时指定列设置BINARY属性,即区分大小写,如上面创建dept表:
CREATE TABLE `test`.`dept`(
`Id` INT(11) NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(100) BINARY NOT NULL,
`Desc` VARCHAR(1000) BINARY,
PRIMARY KEY (`Id`)
);
如果我们表已经创建好了,可以使用Alter命令修改BINARY属性:
ALTER TABLE dept MODIFY COLUMN `Name` VARCHAR(100) BINARY NOT NULL;
还有,如果我们不想修改BINARY属性,我们可以在查询的时候,在查询条件前加BINARY属性:
SELECT * FROM dept WHERE BINARY NAME='SALE';
mysql在Linux下大小写敏感设置的更多相关文章
- 【MySql】linux下,设置mysql表名忽略大小写
[障碍再现] 状况描述01: 在LINUX下调一个程序经常报出找不到表,但是我明明是建了表的, 测试的时候,遇到一些问题,从Windows平台访问虚拟机中的Web应用,经常报出找不到表 ...
- 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装
[MySQL]Linux下MySQL 5.5.5.6和5.7的RPM.二进制和源码安装 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后, ...
- Windows与Linux之间海量文件的传输与Linux下大小写敏感问题
Windows与Linux之间海量文件的传输与Linux下大小写敏感问题 mount.cifs 支持通过网络文件系统挂载,不过需要安装cifs-utils,也可通过mount -t cifs挂载,详细 ...
- MySQL在linux下安装
mysql在linux下的安装 安装环境:系统是 centos6.5 1.下载 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloa ...
- MySQL在Linux下的表名如何不区分大小写
MySQL在Linux下的表名如何不区分大小写 今天测试的时候,遇到一些问题,明明看到数据,就是查不出来;后来发现,在linux下, mysql的表名区分大小写,而在windows下是不区分,从w ...
- MySQL入门——Linux下安装后的配置文件
MySQL入门——Linux下安装后的配置文件 摘要:本文主要了解了在Linux环境下安装MySQL后的配置文件的位置,以及如何创建配置文件. 查看配置文件的加载顺序 找到mysqld的路径 通过wh ...
- 让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)
把 Windows 下的应用部署到 Linux 下,使用到了 Quartz 集群的特性,所以建了 MySql 的中间表,一启动看到报错: Invocation of init method faile ...
- windows下mysql和linux下mysql主从配置
1. linux下mysql安装版本5.6 windows下mysql版本5.7 不要问我为什么版本不一致 就是想这么搞 2. linux为主服务器 windows为从服务器 3.找到li ...
- 【MySQL】Linux下mysql安装全过程——小白入门篇(含有问题详解)
本次安装操作在申请的腾讯云上实现(版本:CentOS Linux release 7.4.1708 (Core) ). 根据教程实现(中途各种挖坑,填坑...),地址:http://www.runoo ...
随机推荐
- Java Timestamp 类的使用
很简单,我们可以这样声明 Timestamp ts=new Timestamp(new Date().getTime());这样我们就可以得到时间比较具体的一个类型转换!!! 在开发web应用中,针对 ...
- Nginx配置缓存
目录 一.简介 二.配置 三.其它参数 忽略Cache-Control头部 缓存post请求 缓存动态内容 使用Cookie作为缓存键的一部分 手动清理缓存 支持断点续传 设置查看缓存命中与否 一.简 ...
- Nginx安全检查
1.检查是否配置Nginx账号锁定策略 描述 1.执行系统命令passwd -S nginx来查看锁定状态 出现Password locked证明锁定成功 如:nginx LK ..... (Pass ...
- BIT 常态化在线CTF系统 pwn题目
偶然得到这个平台,发现是BIT的CTF平台,应该是平时的阶段性的训练题目.看了看题,其他方向的题目感觉都是入门题,但是pwn题目,发现还是比入门题难一点点的,来记录一下. pwn1 栈上任意位置的读写 ...
- 调配资源(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 当资源过度分配了,肿么办? 比如前面的例子,某吃货甲,一天之内给他分配了9.6个工时的吃量,这怎么可以呢,让人加班是不厚道 ...
- sublime打开中文文件乱码以及打开文件出现.dump
一.中文乱码 原因:中文文件由gbk编码,刚安装的sublime不支持转码 解决方法:调用ctrl+shift+p,输入:install package,回车,在稍后弹出的安装包框中搜索:Conver ...
- 获取登录验证码失败及前后端不同域导致session丢失问题分析记录
前言 前两周在把兄弟公司的几个服务部署到我们公司测试环境服务器的时候又遇到了不少问题,因为是前后端分离的项目,所以这次也同样遇到了跨域问题,解决方式也跟上一回的不一样,这里就再来分析记录一下. 登录验 ...
- Vue3 全家桶,从 0 到 1 实战项目,新手有福了
前端发展百花放,一技未熟百技出.未知何处去下手,关注小编胜百书. 我是前端人,专注分享前端内容! 本篇文章主要是,使用 vite 创建一个vue3 项目,实践 vie-router4 vuex4 结合 ...
- JSR310-LocalDateTime序列化 & 反序列化
问题 springboot 版本:spring-boot 2.3.12 今天在开发一个redis 热key服务端的过程中,碰到2个问题: jdk8的LocalDateTime,LocalDate,Lo ...
- nim_duilib(12)之menu(2)
introduction 更多控件用法,请参考 here 和 源码. 本文将介绍menu的选项注册回调 before starting 本文的代码基于上一篇 stage1 回到项目demo_xml, ...