MySQL資料庫名、表名、列名、別名區分大小寫的問題
阿新 • • 發佈:2019-01-25
網站程式碼移植到伺服器的時候,發現數據庫讀取不出來,查詢原因,最終發現是資料庫表名大小寫問題。
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:不區分大小寫