mysql運維-lower_case_table_names
發(fā)表時間:2023-07-14 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]1 簡介 在MySQL中,數(shù)據(jù)庫對應(yīng)數(shù)據(jù)目錄中的目錄。數(shù)據(jù)庫中的每個表至少對應(yīng)數(shù)據(jù)庫目錄中的一個文件(也可能是多個,取決于存儲引擎)。因此,所使用操作系統(tǒng)的大小寫敏感性決定了數(shù)據(jù)庫名和表名的大...
1 簡介 在MySQL中,數(shù)據(jù)庫對應(yīng)數(shù)據(jù)目錄中的目錄。數(shù)據(jù)庫中的每個表至少對應(yīng)數(shù)據(jù)庫目錄中的一個文件(也可能是多個,取決于存儲引擎)。因此,所使用操作系統(tǒng)的大小寫敏感性決定了數(shù)據(jù)庫名和表名的大小寫敏感性。
在大多數(shù)Unix中數(shù)據(jù)庫名和表名對大小寫敏感,而在Windows中對大小寫不敏感。一個顯著的例外情況是Mac OS X,它基于Unix但使用默認(rèn)文件系統(tǒng)類型(HFS+),對大小寫不敏感。然而,Mac OS X也支持UFS卷,該卷對大小寫敏感,就像Unix一樣。
變量lower_case_file_system說明是否數(shù)據(jù)目錄所在的文件系統(tǒng)對文件名的大小寫敏感。ON說明對文件名的大小寫不敏感,OFF表示敏感。
例如在windows下查看:
說明windows系統(tǒng)對大小寫不敏感,mysql也默認(rèn)設(shè)置為對大小寫不敏感。
2 大小寫區(qū)分規(guī)則
linux下:
數(shù)據(jù)庫名與表名是嚴(yán)格區(qū)分大小寫的;
表的別名是嚴(yán)格區(qū)分大小寫的;
列名與列的別名在所有的情況下均是忽略大小寫的;
變量名也是嚴(yán)格區(qū)分大小寫的;
windows下:
都不區(qū)分大小寫
Mac OS下(非UFS卷):
都不區(qū)分大小寫
3 參數(shù)說明(lower_case_table_names)
unix下lower_case_table_names默認(rèn)值為 0 .Windows下默認(rèn)值是 1 .Mac OS X下默認(rèn)值是 2 .
參數(shù)值 | 解釋 |
0 | 使用CREATE TABLE或CREATE DATABASE語句指定的大小寫字母在硬盤上保存表名和數(shù)據(jù)庫名。名稱比較對大小寫敏感。在大小寫不敏感的操作系統(tǒng)如windows或Mac OS x上我們不能將該參數(shù)設(shè)為0,如果在大小寫不敏感的文件系統(tǒng)上將--lowercase-table-names強制設(shè)為0,并且使用不同的大小寫訪問MyISAM表名,可能會導(dǎo)致索引破壞。 |
1 | 表名在硬盤上以小寫保存,名稱比較對大小寫不敏感。MySQL將所有表名轉(zhuǎn)換為小寫在存儲和查找表上。該行為也適合數(shù)據(jù)庫名和表的別名。該值為Windows的默認(rèn)值。 |
2 | 表名和數(shù)據(jù)庫名在硬盤上使用CREATE TABLE或CREATE DATABASE語句指定的大小寫字母進行保存,但MySQL將它們轉(zhuǎn)換為小寫在查找表上。名稱比較對大小寫不敏感,即按照大小寫來保存,按照小寫來比較。注釋:只在對大小寫不敏感的文件系統(tǒng)上適用! innodb表名用小寫保存。 |
4 由大小寫敏感轉(zhuǎn)換為不敏感方法
如果原來所建立庫及表都是對大小寫敏感的,想要轉(zhuǎn)換為對大小寫不敏感,主要需要進行如下3步:
1.將數(shù)據(jù)庫數(shù)據(jù)通過mysqldump導(dǎo)出。
2.在my.cnf中更改lower_case_tables_name = 1,并重啟mysql數(shù)據(jù)庫。
3.將導(dǎo)出的數(shù)據(jù)導(dǎo)入mysql數(shù)據(jù)庫。
5 注意事項
為了避免大小寫引發(fā)的問題,一種推薦的命名規(guī)則是:在定義數(shù)據(jù)庫、表、列的時候全部采用小寫字母加下劃線的方式,不使用任何大寫字母
在任何系統(tǒng)中可以使用lower_case_tables_name=1。使用該選項的不利之處是當(dāng)使用SHOW TABLES或SHOW DATABASES時,看不出名字原來是用大寫還是小寫。
請注意在Unix中如果以前l(fā)ower_case_tables_name = 0將lower_case_tables_name設(shè)置為1之前,重啟mysqld之前,必須先將舊的數(shù)據(jù)庫名和表名轉(zhuǎn)換為小寫。
相關(guān)推薦:
在Mysql中my.ini加上,lower_case_table_names = 0,可以讓表的_MySQL
以上就是mysql運維-lower_case_table_names的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。