共計 1630 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇文章主要介紹了 mysql 運維中 lower_case_table_names 是什么意思,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
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 之前,必須先將舊的數據庫名和表名轉換為小寫。
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“mysql 運維中 lower_case_table_names 是什么意思”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!