LOWER_CASE_TABLE_NAMES

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

1 簡介
    在MySQL中,數據庫對應數據目錄中的目錄。數據庫中的每一個表至少對應數據庫目錄中的一個文件(也多是多個,取決於存儲引擎)。所以,所使用操做系統的大小寫敏感性決定了數據庫名和表名的大小寫敏感性。
    在大多數Unix中數據庫名和表名對大小寫敏感,而在Windows中對大小寫不敏感。一個顯著的例外狀況是Mac OS X,它基於Unix但使用默認文件系統類型(HFS+),對大小寫不敏感。然而,Mac OS X也支持UFS卷,該卷對大小寫敏感,就像Unix同樣。
    變量lower_case_file_system說明是否數據目錄所在的文件系統對文件名的大小寫敏感。ON說明對文件名的大小寫不敏感,OFF表示敏感。
    例如在windows下查看:
linux

    說明windows系統對大小寫不敏感,mysql也默認設置爲對大小寫不敏感。sql

2 大小寫區分規則
    linux下:

    數據庫名與表名是嚴格區分大小寫的;
    表的別名是嚴格區分大小寫的;
    列名與列的別名在全部的狀況下均是忽略大小寫的;
    變量名也是嚴格區分大小寫的;
    windows下:
    都不區分大小寫
    Mac OS下(非UFS卷):
    都不區分大小寫數據庫

3 參數說明(lower_case_table_names)
    unix下lower_case_table_names默認值爲 0 .Windows下默認值是 1 .Mac OS X下默認值是 2 .windows

 

                            參數值                         解釋
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數據庫。spa

 

5 注意事項
    爲了不大小寫引起的問題,一種推薦的命名規則是:在定義數據庫、表、列的時候所有采用小寫字母加下劃線的方式,不使用任何大寫字母
    在任何系統中可使用lower_case_tables_name=1。使用該選項的不利之處是當使用SHOW TABLES或SHOW DATABASES時,看不出名字原來是用大寫仍是小寫。
    請注意在Unix中若是之前lower_case_tables_name = 0將lower_case_tables_name設置爲1以前,重啓mysqld以前,必須先將舊的數據庫名和表名轉換爲小寫。操作系統

本站公眾號
   歡迎關注本站公眾號,獲取更多信息