文档章节

LOWER_CASE_TABLE_NAMES

d
 dragon_tech
发布于 05/09 22:11
字数 995
阅读 9
收藏 0

http://blog.csdn.net/jesseyoung/article/details/40617031

1 简介
    在MySQL中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。
    在大多数Unix中数据库名和表名对大小写敏感,而在Windows中对大小写不敏感。一个显著的例外情况是Mac OS X,它基于Unix但使用默认文件系统类型(HFS+),对大小写不敏感。然而,Mac OS X也支持UFS卷,该卷对大小写敏感,就像Unix一样。
    变量lower_case_file_system说明是否数据目录所在的文件系统对文件名的大小写敏感。ON说明对文件名的大小写不敏感,OFF表示敏感。
    例如在windows下查看:

    说明windows系统对大小写不敏感,mysql也默认设置为对大小写不敏感。

2 大小写区分规则
    linux下:

    数据库名与表名是严格区分大小写的;
    表的别名是严格区分大小写的;
    列名与列的别名在所有的情况下均是忽略大小写的;
    变量名也是严格区分大小写的;
    windows下:
    都不区分大小写
    Mac OS下(非UFS卷):
    都不区分大小写

3 参数说明(lower_case_table_names)
    unix下lower_case_table_names默认值为 0 .Windows下默认值是 1 .Mac OS X下默认值是 2 .

 

                            参数值                         解释
0 使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。在大小写不敏感的操作系统如windows或Mac OS x上我们不能将该参数设为0,如果在大小写不敏感的文件系统上将--lowercase-table-names强制设为0,并且使用不同的大小写访问MyISAM表名,可能会导致索引破坏。
1 表名在硬盘上以小写保存,名称比较对大小写不敏感。MySQL将所有表名转换为小写在存储和查找表上。该行为也适合数据库名和表的别名。该值为Windows的默认值。
2 表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母进行保存,但MySQL将它们转换为小写在查找表上。名称比较对大小写不敏感,即按照大小写来保存,按照小写来比较。注释:只在对大小写不敏感的文件系统上适用! innodb表名用小写保存。

4 由大小写敏感转换为不敏感方法
    如果原来所建立库及表都是对大小写敏感的,想要转换为对大小写不敏感,主要需要进行如下3步:
    1.将数据库数据通过mysqldump导出。
    2.在my.cnf中更改lower_case_tables_name = 1,并重启mysql数据库。
    3.将导出的数据导入mysql数据库。

 

5 注意事项
    为了避免大小写引发的问题,一种推荐的命名规则是:在定义数据库、表、列的时候全部采用小写字母加下划线的方式,不使用任何大写字母
    在任何系统中可以使用lower_case_tables_name=1。使用该选项的不利之处是当使用SHOW TABLES或SHOW DATABASES时,看不出名字原来是用大写还是小写。
    请注意在Unix中如果以前lower_case_tables_name = 0将lower_case_tables_name设置为1之前,重启mysqld之前,必须先将旧的数据库名和表名转换为小写。

 

本文转载自:https://www.cnblogs.com/mydriverc/p/8296647.html

d
粉丝 5
博文 463
码字总数 14181
作品 0
西安
私信 提问
慎用lower_case_table_names来实现表名不区分大小写

OS:Red Hat Enterprise Linux Server release 6.X DB Version: 5.5.22-enterprise-commercial-advanced-log 我的目的是想达到如下的效果: 'select from Tn;' 等同于'select from tn;' ,即对......

旺旺的钥匙
2012/07/06
10.9K
6
mysql 大小写取消敏感设置

mysql 大小写取消敏感设置 #mysqld --SET-lowercasetable_names=1; 或者在mysql server的配置文件中添加配置项: vi /etc/my.cnf lowercasetable_names=1 该变量值的详细定义如下:...

pcdog
2016/11/05
0
0
MySQL 中 Identifier Case Sensitivity

原文出处:潇湘隐者 在MySQL当中,有可能遇到表名大小写敏感的问题。其实这个跟平台(操作系统)有关,也跟系统变量lowercasetable_names有关系。下面总结一下,有兴趣可以查看官方文档“Ide...

潇湘隐者
2018/08/20
0
0
Mysql 表名大小写敏感

默认情况下,mysql在创建数据库对象时,是区分大小写的。故与microsoft之间进行移植时,要特别注意是否存在问题。在mysql中大小写与参数lowercasetablenames有很大关系。 以下为官方解释: ...

HZCoder
2016/03/29
49
0
mysql表名忽略大小写

1、查看大小写区分 mysql> show variables like "%case%"; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lowercasefile_system | ......

凤决
2016/05/17
27
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS盒子模型

一、什么叫框模型 页面元素皆为框(盒子) 定义了元素框处理元素内容,内边距,外边距以及边框的计算方式 二、外边距 围绕在元素边框外的空白距离(元素与元素之间的距离) 语法:margin,定...

wytao1995
今天
4
0
Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部