mysql踩坑(一)-大小寫規則
阿新 • • 發佈:2020-09-02
mysql大小寫
在實際的專案中,大家或多或少都會遇到過mysql資料庫大小寫的問題。下面,博主將簡單的介紹一下mysql資料庫的大小寫問題。
sql關鍵字和函式名
在mysql資料庫中,sql關鍵字和大小寫 是不區分大小寫的。下面語句的倆種寫法,mysql都能夠正常的執行。
/*全小寫*/
select now();
/*全大寫*/
SELECT NOW():
資料庫名和表名
博主在一次資料庫的遷移時,就碰到了資料庫表名大小寫的問題。在windows伺服器上執行好好的應用,在mysql資料庫遷移到linux伺服器上後,就出現了表不存在的異常。後面經過排查得知,mysql資料庫名和表名與作業系統是否區分大小寫有關係
windows系統
在windows系統下,mysql資料庫不區分大小寫。也就是說你的select語句中的表名是全大寫的,而實際資料庫的表名是全小寫的,也能夠查詢到資料。
查詢大寫的名稱ROLE表,能夠查詢到表資料。
查詢小寫的名稱ROLE表,能夠查詢到表資料。
linux系統
在linux系統下,mysql資料庫區分大小寫。如下圖所示,查詢大寫的名稱ROLE表,datagrip返回了 表不存在的錯誤提示。
而使用全小寫的名稱role,則能夠查詢到表資料。
博主這裡使用是docker執行的mysql映象,配置檔案的路徑為/etc/mysql/mysql.conf.d/mysqld.cnf,新增如下所示的配置,使的mysql不區分大小寫。
low_case_table_names=1
配置完後,重啟mysql服務,這時候再次檢視執行結果。
列名和索引名
在mysql資料庫中,不區分列名和索引名的大小寫。如下圖所示,使用大寫和小寫的id欄位都能夠查詢到資料。
如下圖所示,使用大寫和小寫的索引名稱都能夠正常的查詢資料。