1. 程式人生 > >Mysql修改大小寫敏感

Mysql修改大小寫敏感

MySQL中,一個庫會對應一個資料夾,庫裡的表會則以檔案的方式存放在資料夾內,所以,作業系統對大小寫的敏感性決定了資料庫和表的大小寫敏感(MySQL有一個只讀的系統變數lower_case_file_system,其值反映的正是當前檔案系統是否區分大小寫)因此:在Windows下Mysql的資料庫和表名是大小寫不敏感的,而在大多數型別的Unix系統中是大小寫敏感的。


以下是MySQL詳細的大小寫區分規則:

在Linux下:

1、資料庫名與表名是嚴格區分大小寫的;
2、表的別名是嚴格區分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變數名也是嚴格區分大小寫的; 

在Windows下:

全部不區分大小寫



補充:

1.MySQL中有一個系統變數:lower_case_table_names,專門用來配置是否區分據庫名與表名的大小寫。 如果你的系統是Windows,而你又希望mysql能夠區分大小寫,那麼你可以在my.ini檔案中,在[mysqld]一節的最後,加入如下部分:

  1. #If set to 0, table names are stored as specified and comparisons are case sensitive.   
  2. #If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive.   
  3. #If set to 2, table names are stored as given but compared in lowercase. This option also applies to database names and table aliases.  
  4. lower_case_table_names=0  


2.MySQL在查詢字串時是大小寫不敏感的。如某欄位值需要區分大小寫,可在定義該欄位時指定BINARY屬性。

2.一種MySQL命名規範

為了避免大小寫引發的問題,一種推薦的命名規則是:在定義資料庫、表、列的時候全部採用小寫字母加下劃線的方式,不使用任何大寫字母。


3.關於Hibernate/JPA資料庫schema自動對映的問題

使用Hibernate/JPA的工程可以自動生成資料庫的schema,由於java有著自己的類與欄位命名規則,這與mysql推薦的命名規則不太相符,於是出現了follow哪一種命名規範的問題。一般來說這會由團隊和DBA協商確定,使用mysql的命名規範不會出現大小寫帶來的問題,對於DBA來說可能也更加友好,而使用java的命名規範則對開發人員來說無疑是更加友好的,這將省去列名的對映配置,同時也方便開發人員檢視資料庫。如果你的專案使用了後者,你最好像上面講到的,設定一下lower_case_table_names=0