更改MySql表和欄位區分大小寫

yubinfeng發表於2015-05-06

 

 

 

資料庫和表名在 Windows 中是大小寫不敏感的 ,而在大多數型別的 Unix 系統中是大小寫敏感的
Windows 版的 MySQL 預設繼承 os 的大小寫習慣,即使 SQL中有區分,在匯入的時候都會被轉為小寫,如果今後再將此資料庫匯出就可能存在大小寫的問題。my.ini 中有屬性lower_case_table_names 可以更改此預設值,要嚴格區分大小寫,將此項的置設定為2,再重啟 MySQL 服務即可。
參考:
[mysqld]
lower_case_table_names=2
 
如果沒有,可以在MySQL的配置檔案中my.ini [mysqld] 中增加一行

  lower_case_table_names = 2

 
注意:my.ini 不在C:\Program Files\MySQL\MySQL Server 5.5下,而是在:C:\ProgramData\MySQL\MySQL Server 5.5\my.ini

然而,該查詢在Windows中是可以的。要想避免出現差別,最好採用一致的轉換,例如總是用小寫建立並引用資料庫名和表名。在大多數移植和使用中建議使用該轉換。

在MySQL中如何在硬碟上儲存和使用表名和資料庫名由lower_case_tables_name系統變數確定,可以在啟動mysqld 時設定。lower_case_tables_name可以採用下面的任一值:

含義

0

使用CREATE TABLE或CREATE DATABASE語句指定的大寫和小寫在硬碟上儲存表名和資料庫名。名稱比較對大小寫敏感。在Unix系統中的預設設定即如此。請注意如果在大小寫不敏感的檔案系統上用--lower-case-table-names=0強制設為0,並且使用不同的大小寫訪問MyISAM表名,會導致索引破壞。

1

表名在硬碟上以小寫儲存,名稱比較對大小寫敏感。MySQL將所有表名轉換為小寫以便儲存和查詢。該行為也適合資料庫名和表的別名。該值為Windows和Mac OS X系統中的預設值。

2

表名和資料庫名在硬碟上使用CREATE TABLE或CREATE DATABASE語句指定的大小寫進行儲存,但MySQL將它們轉換為小寫以便查詢。名稱比較對大小寫敏感。註釋: 只 在對大小寫不敏感的檔案系統上適用! InnoDB表名以小寫儲存,例如lower_case_tables_name=1。

 

相關文章