关于MySQL区分大小写问题的探究

先说遇到的问题:有个mysql实例跑了两个库,两套程序。其中一个库的表名全为大写,另一个库的表名全为小写。

表名为小写的这个库的程序里面写sql语句的时候有用大写的,运行时会提示找不到表。所以需要在my.cnf里添加“lower_case_table_names = 1”使mysql忽略大小写。但是加上这个之后,会导致表名大写的那套程序提示找不到表,而且无论用查询语句用大写表名还是小写表名都提示找不到表。

最后通过“alter table 大写表名 rename to 小写表名”将大写表名转换为小写表名才解决此问题。

遇到问题就要深究一下,mysql的大小写敏感与否,取决于操作系统的大小写敏感

所以在windows平台上,mysql不区分大小写;

而在Linux平台上:

库名和表名(以及表的别名)都是严格区分大小写的;

列名不区分大小写。

在回过头来看上面的问题,之所以添加了忽略大小写的参数,却还是无法访问大写表名的表,是因为大写的表名在文件系统存储表文件时也是大写存储(例如表LJK对应LJK.frm;表ljk对应ljk.frm),而mysql忽略大小写的结果是“把sql语句里的库名和表名均按照小写来处理”,这样其实会导致在系统层面找不到表结构和表数据文件,所以对于大写的表和库,在打开“lower_case_table_names = 1”会无法访问。

时间: 2024-11-10 07:07:38

关于MySQL区分大小写问题的探究的相关文章

[转]MYSQL高可用方案探究(总结)

前言 http://blog.chinaunix.net/uid-20639775-id-3337432.htmlLvs+Keepalived+Mysql单点写入主主同步高可用方案 http://blog.chinaunix.net/uid-20639775-id-3337448.htmlLvs+Keepalived+Mysql单点写入读负载均衡主主同步高可用方案http://blog.chinaunix.net/uid-20639775-id-3337471.htmlHeartbeat高可用M

MySQL MMM 数据不一致探究

MySQL MMM 数据不一致探究 slave重新指向新的master 的关键日志输出,通过这些日志输出,我们大致可以明白MMM自动failover或在线切换时的执行流程. --自动failover,slave节点 2015/02/06 01:47:09  INFO Changing active master to 'raugherdb1' 2015/02/06 01:47:09 DEBUG Executing /usr/lib/mysql-mmm//agent/set_active_mast

MYSQL区分大小写

MYSQL区分大小写   1.linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写: 2.用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写: lower_case_table_names参数详解: lower_case_table_names = 0 其中 0:区分大小写,1:不区分大小写 MySQL在Linux下数据库名.表名.列名.别名大

MySQL区分大小写的查询

mysql查询默认是不区分大小写的 如: select  * from  table_name where  a like  'a%' select  * from  table_name where  a like  'A%' select * from table_name where a like 'a%' select * from table_name where a like 'A%' 效果是一样的. 要让mysql查询区分大小写,可以: select  * from  table_

linux 下配置mysql区分大小写(不区分可能出现找不到表的情况)怎么样使用yum来安装mysql

Linux 默认情况下,数据库是区分大小写的:因此,要将mysql设置成不区分大小写 在my.cof 设置 lower_case_table_names=1(1忽略大小写,0区分大小写) 检查方式:在mysql控制台中输入如下命令 show variables like 'lower%'; linux下查找mysql安装路径: whereis mysql yum 安装mysql: linux下使用yum安装mysql,以及启动.登录和远程访问. 1.安装 查看有没有安装过: yum list i

mysql区分大小写搜索

form:http://www.uphtm.com/database/257.html 在默认情况下,MySQL搜索不区分大小写(但某些字符集始终区分大小写,如czech).这意味着,如果你使用col_name LIKE 'a%'进行搜索,你将获得以A或a开始的所有列.如果打算使搜索区分大小写,请确保操作数之一具有区分大小写的或二进制校对.例如,如果你正在比较均适用latin1字符集的列和字符串,可使用COLLATE操作符,使1个操作数具有latin1_general_cs或latin1_bin

MySQL高可用方案探究

来自 http://bbs.chinaunix.net/thread-3769165-1-1.html 最近花了点时间研究了一下mysql的高可用,总结成文档,希望对初学这有帮助. Lvs+Keepalived+Mysql单点写入主主同步高可用方案 http://blog.chinaunix.net/uid-20639775-id-3337448.html Lvs+Keepalived+Mysql单点写入读负载均衡主主同步高可用方案 http://blog.chinaunix.net/uid-2

mysql批量数据导入探究

最近工作碰到一个问题,如何将大量数据(100MB+)导入到远程的mysql server上. 尝试1: Statement执行executeBatch的方法.每次导入1000条记录.时间为12s/1000条.比较慢. 对于1M次的插入这意味着需要4个多小时,期间还会因为网络状况,数据库负载等因素而把载入延迟提升到85s/1000条甚至更高. 效果较差. 尝试2: 使用PreparedStatement,该方法需要预先给定insert操作的“格式”. 实测用这种方式插入的效率为每秒钟数十行. 注意

Linux安装配置mysql

Mysql 安装和配置: 1.安装Mysql: 将Mysql服务端和客户端上传到Linux,先装服务端,后装客户端 下载地址:http://down.51cto.com/data/2222065 安装执行命令: rpm -ivh 安装包 2.设置密码 mysqladmin -u 张三 password 密码 3.修改密码: mysqladmin -u 张三 -p 老密码 password 新密码 3.登录mysql: mysql -u root -p 密码 4.添加用户(Mysql区分大小写):