mysql運維-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
****************************************************************************************

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章