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 ...
随机推荐
- zabbix之模板制作(memcache redis)
#:找一台主机安装redis和memcached(记得安装zabbix-agent) root@ubuntu:~# apt install redis root@ubuntu:~# apt insta ...
- 浅谈iptables与firewalld防火墙
iptables基于包过滤的防火墙工具 ,Linux 内核集成的 IP 信息包过滤系统,对流入和流出服务器的数据包进行精细管理 规则是存储在专用信息包过滤表中 防火墙按照规则做出判断 而netfilt ...
- 观察者模式之spring事件机制
ddsspring中的事件机制使用到设计模式中的观察者模式 ,观察者模式有两个概念,1.观察者.被观察者.2.被观察者做出相应得动作,观察者能接收到.不分析设计模式,学习下spring中的事件机制实际 ...
- 通过Jedis操作Redis
package com.yh; import org.junit.After; import org.junit.Before; import org.junit.Test; import redis ...
- 关于synchronize与lock的区别
参考文献:https://www.cnblogs.com/cloudblogs/p/6440160.html 一.synchronize修饰不同代码都是锁住了什么? 大家都知道synchronize可 ...
- 【HarmonyOS】【xml】初学XML布局作业
首先要明确,有两种布局方式 线性布局:DirectionalLayout 依赖布局:DependentLayout 好,接下来看一看下面的例子 页面案例1 代码如下: <?xml version ...
- 如何查看电脑IP地址
如何查看电脑的IP地址 win+r输入cmd回车,然后输入:ipconfig回车
- Firebug: Net Panel 使用详解
Introduction to Firebug: Net Panel Since there is not much user documentation related to Firebug fea ...
- <转>C++继承中虚函数的使用
转自:http://blog.csdn.net/itolfn/article/details/7412364 一:继承中的指针问题. 1. 指向基类的指针可以指向派生类对象,当基类指针指向派生类对 ...
- [Java Web 王者归来]读书笔记1
第一章 Java web 开发概述 1 WEB服务器运行时一直在TCP 80(默认端口)监听, 若使用其他端口在url中需要显示标注端口号(例如:8080) 2 WEB服务器:微软的IIS.Apach ...