zoukankan      html  css  js  c++  java
  • 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 

     ----

    学习交流

  • 相关阅读:
    Log4j2_java日志使用
    Log4j_java日志使用
    DB_常用知识
    Oracle_内置信息
    Loadrunner使用时IE浏览器打不开怎么办
    性能测试
    python条件语句及循环语句
    计算机网络
    单元测试
    边界条件测试
  • 原文地址:https://www.cnblogs.com/JiangLe/p/6914560.html
Copyright © 2011-2022 走看看