一、从操作系统说起

  1.我们知道mysql 是跨平台的、它可以在许多平台上运行如windows 、linux、unix(mac)。linux 是类unix的,

  但是windows和linux就有非常大的不同了。 windows:文件名不区分大小写、linux:文件名区分大小写;这样会有一个问题

  a.txt 和 A.txt 在linux 认为这个是两个不同的文件;windows中认为这个两个同名文件(也就是说你没有法办在同一个文件夹下

  不能同时存在a.txt 和 A.txt)

  2、为了加深映像我们在一个已经有A.txt 的文件夹下增加一个a.txt 看一下windows会说什么

  3、linux下是区分大小写的

[jianglexing@workstudio Desktop]$ cd tmp
[jianglexing@workstudio tmp]$ ll
total
[jianglexing@workstudio tmp]$ touch a.txt
[jianglexing@workstudio tmp]$ touch A.txt
[jianglexing@workstudio tmp]$ ll
total
-rw-rw-r-- jianglexing jianglexing May : a.txt
-rw-rw-r-- jianglexing jianglexing May : A.txt # linux 中a.txt 和B.txt是算不同的文件的 .

二、mysql 是怎样保存数据的

  1、一个数据库对应着文件系统中的一个目录(文件夹)

create database appdb character set utf8;
Query OK, 1 row affected (0.00 sec) mysql> system ls -l /usr/local/mysql/data
total 195964
drwxr-x--- 2 mysql mysql 20 May 28 09:15 appdb #appdb 是个文件夹
-rw-r----- 1 mysql mysql 56 Apr 22 21:29 auto.cnf
-rw------- 1 mysql mysql 1676 Apr 22 21:29 ca-key.pem
-rw-r--r-- 1 mysql mysql 1075 Apr 22 21:29 ca.pem
-rw-r--r-- 1 mysql mysql 1079 Apr 22 21:29 client-cert.pem
-rw------- 1 mysql mysql 1676 Apr 22 21:29 client-key.pem
-rw-r----- 1 mysql mysql 3363466 May 28 09:14 error.log
drwxr-x--- 2 mysql mysql 136 May 22 12:28 fdb
-rw-r----- 1 mysql mysql 654 May 27 23:33 ib_buffer_pool
-rw-r----- 1 mysql mysql 79691776 May 28 09:14 ibdata1
-rw-r----- 1 mysql mysql 50331648 May 28 09:14 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Apr 22 21:29 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 May 28 09:14 ibtmp1
drwxr-x--- 2 mysql mysql 4096 Apr 22 21:29 mysql
-rw-r----- 1 mysql mysql 685 May 25 16:17 mysql-bin.000027
-rw-r----- 1 mysql mysql 233 May 25 16:17 mysql-bin.000028
-rw-r----- 1 mysql mysql 209 May 25 16:17 mysql-bin.000029
-rw-r----- 1 mysql mysql 233 May 25 16:52 mysql-bin.000030
-rw-r----- 1 mysql mysql 209 May 25 16:52 mysql-bin.000031
-rw-r----- 1 mysql mysql 31389 May 26 17:27 mysql-bin.000032
-rw-r----- 1 mysql mysql 209 May 26 17:27 mysql-bin.000033
-rw-r----- 1 mysql mysql 26331 May 27 13:57 mysql-bin.000034
-rw-r----- 1 mysql mysql 209 May 27 13:57 mysql-bin.000035
-rw-r----- 1 mysql mysql 396 May 27 16:30 mysql-bin.000036
-rw-r----- 1 mysql mysql 209 May 27 16:30 mysql-bin.000037
-rw-r----- 1 mysql mysql 1575 May 27 23:33 mysql-bin.000038
-rw-r----- 1 mysql mysql 209 May 27 23:33 mysql-bin.000039
-rw-r----- 1 mysql mysql 363 May 28 09:15 mysql-bin.000040
-rw-r----- 1 mysql mysql 266 May 28 09:14 mysql-bin.index
drwxr-x--- 2 mysql mysql 8192 Apr 22 21:29 performance_schema
-rw------- 1 mysql mysql 1676 Apr 22 21:29 private_key.pem
-rw-r--r-- 1 mysql mysql 452 Apr 22 21:29 public_key.pem
-rw-r--r-- 1 mysql mysql 1079 Apr 22 21:29 server-cert.pem
-rw------- 1 mysql mysql 1676 Apr 22 21:29 server-key.pem
drwxr-x--- 2 mysql mysql 8192 Apr 22 21:29 sys
drwxr-x--- 2 mysql mysql 4096 May 27 21:27 tempdb
drwxr-x--- 2 mysql mysql 56 May 26 12:48 testdb
-rw-r----- 1 mysql mysql 5 May 28 09:14 workstudio.pid

  2 表对应着文件系统中的文件

use appdb;
Database changed
mysql> create table person(id int not null auto_increment primary key,name varchar(8));
Query OK, 0 rows affected (0.00 sec) mysql> create table PERSON(id int not null auto_increment primary key,name varchar(8));
Query OK, 0 rows affected (0.01 sec) mysql> system ls -l /usr/local/mysql/data/appdb/
total 220
-rw-r----- 1 mysql mysql 61 May 28 09:15 db.opt
-rw-r----- 1 mysql mysql 8586 May 28 09:25 person.frm
-rw-r----- 1 mysql mysql 8586 May 28 09:26 PERSON.frm
-rw-r----- 1 mysql mysql 98304 May 28 09:25 person.ibd
-rw-r----- 1 mysql mysql 98304 May 28 09:26 PERSON.ibd # 看到了吧、这样的话linux和windows 就两个平台就不能兼容了;
# 因为windows 认为PERSON.ibd == person.ibd
# person.frm == PERSON.frm

三、lower_case_table_names 兼容windows & linux :

  1 如果把lower_case_table_names 设置为1 、那么mysql会把SQL语句中所有的表名都变成小写;

  2 lower_case_table_names 应该在初始化MySQL的时候就完成的、不然可能会引起一引起问题;

  如:

lower_case_table_names 主要是为了兼容windows & linux

----

学习交流

mysql lower_case_table_names ---- 一律把表名处理为小写的更多相关文章

  1. mysql解决select * from 表名 (where + 约束条件为空)

    mysql解决select * from 表名 (where + 约束条件为空),示例如下: SELECT * from tableName WHERE name is NULL; 从 tableNa ...

  2. 让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)

    把 Windows 下的应用部署到 Linux 下,使用到了 Quartz 集群的特性,所以建了 MySql 的中间表,一启动看到报错: Invocation of init method faile ...

  3. 更改MYSQL数据库不区分大小写表名

    今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢? 后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区 ...

  4. linux环境下mysql默认是区分表名大小写的

    在linux环境下,mysql默认表明是区分大小写的,我们可以查看全局变量发现: mysql> show variables like 'lower%'; +------------------ ...

  5. mysql数据库如何设置表名大小写不敏感?

    转自:https://blog.csdn.net/iefreer/article/details/8313839 在跨平台的程序设计中要注意到mysql的一些系统变量在windows和linux上的缺 ...

  6. mysql 远程登录与表名大小写问题

    好久没写博客了,这段时间在学习一个开源的项目,里面使用到了mysql,好久没使用mysql了.在使用过程中遇到了一个问题,远程登陆.报错信息很明显,连接失败.解决思路如下: 1. 首先检查到服务器网络 ...

  7. MySQL中 optimize table '表名'的作用

    语法: optimize table '表名' 一,原始数据 1,数据量 2,存放在硬盘中的表文件大小 3,查看一下索引信息 索引信息中的列的信息说明. Table :表的名称.Non_unique: ...

  8. 关于mysql存储过程创建动态表名及參数处理

      转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)  近期游戏開始第二次内測,開始处理操作日志.最開始把日志放到同一个表里面,发现一天时间,平均100玩家 ...

  9. MYSQL中只知表名查询属于哪个SCHEMA

    只知道表名XXX查该表属于哪个schema.以及该表有哪些列等信息 SELECT * from information_schema.columns WHERE table_name = 'xxx'; ...

随机推荐

  1. mysql_fetch_assoc 跟mysql_fetch_array 有什么区别?

    mysql_fetch_assoc 得到的是关联数组. Array ( [0] => Array ( [title] => 特价9.9包邮 EFOLAR/依芙拉 BB粉润腮红粉 饼 蘑菇 ...

  2. Unity3D如何减少安装包大小

    译官方文档:http://docs.unity3d.com/Manual/ReducingFilesize.html PDF文档:http://www.rukawa.cn/Uploads/Attach ...

  3. SWT常用组件

    SWT类所代表的事件常量: 事件类型常量 说明 SWT.Activate 当激活窗口时 SWT.Arm 菜单项被选中之前 SWT.Close 关闭窗口时 SWT.Collapse 折叠树的节点时 SW ...

  4. cas忽略地址配置

    项目中需要忽略部分地址不需要cas验证,网上资料不多,结合cas源码,找到了配置方法:web.xml中增加ignorePattern配置.实际上是通过正则表达式来匹配. <filter> ...

  5. macOS VMWare Fusion报错”找不到可以连接的有效对等进程”的解决方案

    macOS VMWare Fusion报错”找不到可以连接的有效对等进程”的解决方案 我的是macOS 10,默认情况下不允许未知身份的软件安装 默认情况,如下图所示: 解决办法: sudo spct ...

  6. docker和虚拟化技术的区别

    1.docker和虚拟化技术的区别 Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,通过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境.Dock ...

  7. axure 6.5 汉化正式版软件及注册码

    Axure公司发布了Axure RP 6.5 正式版. 官方主页: http://www.axure.com/news 官方下载: http://www.axure.com/download 视频介绍 ...

  8. Orchard运用 - 设置网站Favicon标识

    Favicon其实是访问其网站时在浏览器地址栏最前边呈现的类似logo的图标,可以作为品牌的标识,一般是其网站logo的缩小版并一般是ico格式的图片.详细解释可看这里: Favicon - 维基百科 ...

  9. C++如何禁止掉对象的复制操作

    最容易想到的是将拷贝构造函数与赋值函数声明为private.但是,private只是说外部不能直接调用,但是可以间接通过类的成员函数与友元函数对其访问.那么怎么办呢? ---->在类中,允许声明 ...

  10. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...