mysql lower_case_table_names ---- 一律把表名处理为小写
Posted 蒋乐兴的技术随笔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql lower_case_table_names ---- 一律把表名处理为小写相关的知识,希望对你有一定的参考价值。
一、从操作系统说起:
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 0 [jianglexing@workstudio tmp]$ touch a.txt [jianglexing@workstudio tmp]$ touch A.txt [jianglexing@workstudio tmp]$ ll total 0 -rw-rw-r-- 1 jianglexing jianglexing 0 May 28 09:10 a.txt -rw-rw-r-- 1 jianglexing jianglexing 0 May 28 09:10 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 ---- 一律把表名处理为小写的主要内容,如果未能解决你的问题,请参考以下文章