lower_case_table_names与表格名称大小写的问题
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之前,必须先将旧的数据库名和表名转换为小写。
原文地址:http://blog.csdn.net/jesseyoung/article/details/40617031
博客主页:http://blog.csdn.net/jesseyoung
最新文章
- Redis设计与实现读书笔记(二) 链表
- 【腾讯GAD暑期训练营游戏程序班】游戏场景管理作业说明文档
- SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
- WCF、MongoDB
- Junity测试最大子数列和的Java程序
- 转载---Java集合对象的深度复制与普通复制
- virtualenv and virtualenvwrapper on Ubuntu 14.04
- PHP通过串口发短信
- c#中栈和堆的理解
- C++ explict 关键字
- SDN环境搭建(mininet,OVS,ryu安装及命令)
- 关于ref与out的区别
- JAVAscript学习笔记 js计时器与倒计时 第六节 (原创) 参考js使用表
- postman的安装与使用(模拟请求)
- 改造一下jeecg中的部门树
- PHP删除当前目录及其目录下的所有文件
- 【转】深入浅出JMS(一)--JMS基本概念
- 用十条命令在一分钟内检查 Linux 服务器性能
- Spatial Sound Research
- (转)fabric 一个链码如何调用另一个链码
热门文章
- OpenCV.Net基于傅里叶变换进行文本的旋转校正
- python数据挖掘介绍
- Lambda(一)lambda表达式初体验
- Vim操作:打开文件
- DOIS2019大会,腾讯 DevOps 测试中台探秘
- 【Java】理解ClassNotFoundException与NoClassDefFoundError的区别
- HDU 1241 Oil Deposits 题解
- C++编译错误 --- 成员函数定义在 .h 文件中出现重定义错误(Error LNK 2005)
- router-link路由传参
- Spring(004)-Bean装配