1. 程式人生 > 實用技巧 >mysql踩坑(一)-大小寫規則

mysql踩坑(一)-大小寫規則

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欄位都能夠查詢到資料。

如下圖所示,使用大寫和小寫的索引名稱都能夠正常的查詢資料。

博主微信公眾號