1. 程式人生 > >MySQL資料庫名、表名、列名、別名區分大小寫的問題

MySQL資料庫名、表名、列名、別名區分大小寫的問題

網站程式碼移植到伺服器的時候,發現數據庫讀取不出來,查詢原因,最終發現是資料庫表名大小寫問題。

MySQL在Linux下資料庫名、表名、列名、別名大小寫規則是這樣的:

  1、資料庫名與表名是嚴格區分大小寫的;
  
  2、表的別名是嚴格區分大小寫的;

  3、列名與列的別名在所有的情況下均是忽略大小寫的;

  4、變數名也是嚴格區分大小寫的;

作業系統的敏感性決定資料庫和表命名的大小寫敏感,所以:
MySQL在Windows下都不區分大小寫。
MySQL在Mac下好像也不區分大小寫(起碼我操作起來沒出現問題),但是OS X又是類Unix系統,難道大小寫敏感改了?

XiaonandeMacBook-Pro:~ Ive$ ls
Applications    Downloads   Music       VirtualBox VMs
Desktop     Library     Pictures    www
Documents   Movies      Public
XiaonandeMacBook-Pro:~ Ive$ cd music
XiaonandeMacBook-Pro:music Ive$ ls
Audio Music Apps    iTunes
GarageBand      網易雲音樂
XiaonandeMacBook-Pro
:music Ive$ cd ../Music/ XiaonandeMacBook-Pro:Music Ive$ ls Audio Music Apps iTunes GarageBand 網易雲音樂

測試了一下,大小寫其實都可以,但是小寫的時候,沒有Tab補全。

  所以在不同作業系統中為了能使程式和資料庫都能正常執行,最好的辦法是在設計的時候都轉為小寫,但是如果在設計的時候已經規範化大小寫了,那麼在Linux環境下只要對資料庫的配置做下改動就行了,具體操作如下:

  在MySQL的配置檔案中/etc/mysql/my.ini [mysqld] 模組中增加一行

  lower_case
_table_names = 1

  引數解釋:

  0:區分大小寫

  1:不區分大小寫