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下查看:

mysql運維-lower_case_table_names

說明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之前,必須先將舊的數據庫名和表名轉換為小寫。

相關推薦:

在Mysql中my.ini加上,lower_case_table_names?= 0,可以讓表的_MySQL

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享