文档章节

mysql表名大小写敏感

xbuding
 xbuding
发布于 2016/04/24 21:51
字数 587
阅读 86
收藏 2

在ubuntu下安装的mysql版本是 5.6.25-0ubuntu1 

linux下的mysql的表名是大小写敏范的。而在在windows下安装的mysql是大小写不敏感的。

原因是因为lower_case_table_names该属性在linux下默认为0,windows下默认为1

0---大小写敏感

1---大小写不敏感

所以通过修改mysql的my.cnf的配置,既可以达到大小写不敏感.

linux下修改my.cnf(如果是ubuntu的版本,不存在/ect/my.cnf而是存在于,/ect/mysql/my.cnf)来修改该配置:

在[mysqld]组中,添加如下语句:

[mysqld]
lower_case_table_names = 1

然后重启 service mysql restart即可。

 

由于之前本人建了一张EMP的表(在lower_case_table_names=0的时候):

CREATE TABLE EMP (
    ENAME VARCHAR(10),
    HIREDATE DATE,
    SAL DECIMAL(10,2)
);

是大写的表名。在修改配置之后,大小写不敏感了。

使用如下sql语句均报错:

DESC emp; 
DESC EMP;

均报同样的错误:

[Err] 1146 - Table 'test.emp' doesn't exist

按正常来说,如果DESC EMP;应该报: 

[Err] 1146 - Table 'test.EMP' doesn't exist

才对的,但是,两者却是报同样的错误。

然后查看文档:

Value   Meaning  
0   Table and database names are stored on disk using the lettercase specified in the CREATE TABLE or CREATE DATABASE 
     statement. Name comparisons are case sensitive. You should not set this variable to 0 if you are running MySQL on a 
     system that has case-insensitive file names (such as Windows or Mac OS X). If you force this variable to 0 with
     --lower-case-table-names=0 on a case-insensitive file system and access MyISAM tablenames using different lettercases,
      index corruption may result.  
1   Table names are stored in lowercase on disk and name comparisons are not case sensitive. MySQL converts all table 
     names to lowercase on storage and lookup. This behavior also applies to database names and table aliases.  
2   Table and database names are stored on disk using the lettercase specified in the CREATE TABLE or CREATE DATABASE 
     statement, but MySQL converts them to lowercase on lookup. Name comparisons are not case sensitive. This works only
     on file systems that are not case sensitive! InnoDB table names are stored in lowercase, as forlower_case_table_names=1.

可以看出

0是严格按找字母大小写查找

2是通过把大写转换成小写再进行查询(前提是大小写不敏感)。所有在已经存在大写的表时,转换成小写时,就找不到原来表,表名是EMP,但是更改配置后,查询表名的时候查找名称为emp的表,故而报[Err] 1146 - Table 'test.emp' doesn't exist,

通过把lower_case_table_names调节为0,然后将表名改回小写,然后,再调节回1.问题即可解决。

 

© 著作权归作者所有

共有 人打赏支持
xbuding
粉丝 4
博文 35
码字总数 12103
作品 0
广州
Mysql数据库名和表名的大小写敏感性问题

数据库和表名在 Windows 中是大小写不敏感的 ,而在大多数类型的 Unix 系统中是大小写敏感的 Windows 版的 MySQL 默认继承 os 的大小写习惯,即使 SQL中有区分,在导入的时候都会被转为小写,...

mjrao
2014/02/14
0
0
linux mysql 大小写问题

show variables like '%case%' mysql 在linux中与windows中是不同的。在windows中建表表名是不区分大小写的,而在linux是区分大小的的、但是linux中是可以设置的。 ------------------------...

Zero零_度
2016/10/28
14
0
linux mysql 大小写问题

mysql 在linux中与windows中是不同的。在windows中建表表名是不区分大小写的,而在linux是区分大小的的、但是linux中是可以设置的。 ----------------------------------------------- 以下的...

王小盼
2016/05/05
33
0
解决mysql数据库大小写敏感问题

今天在部署java项目到linux服务器上去的时候出现了个小问题,数据库是mysql,项目在我本地(windows环境下)是没问题的。错误信息:2012-09-06 00:01:29,314 INFO [org.springframework.jdbc....

java_T
2012/09/06
0
4
【mark】centos下,更改mysql数据库表名大小写敏感

Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写; root登录,修改/etc/my.cnf,在末尾添加一行:lowercasetablenames=1 lowercasetablenames参数: 0为敏感,1为不敏感。...

youway
2014/10/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
59分钟前
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
9
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部