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


mysql大小寫

在實際的項目中,大家或多或少都會遇到過mysql數據庫大小寫的問題。下面,博主將簡單的介紹一下mysql數據庫的大小寫問題。

sql關鍵字和函數名

在mysql數據庫中,sql關鍵字和大小寫 是不區分大小寫的。下面語句的倆種寫法,mysql都能夠正常的執行。

/*全小寫*/
select now();

/*全大寫*/
SELECT NOW():

數據庫名和表名

博主在一次數據庫的遷移時,就碰到了數據庫表名大小寫的問題。在windows服務器上運行好好的應用,在mysql數據庫遷移到linux服務器上后,就出現了表不存在的異常。后面經過排查得知,mysql數據庫名和表名與操作系統是否區分大小寫有關系

windows系統

在windows系統下,mysql數據庫不區分大小寫。也就是說你的select語句中的表名是全大寫的,而實際數據庫的表名是全小寫的,也能夠查詢到數據。

查詢大寫的名稱ROLE表,能夠查詢到表數據。

Windows查詢role表

查詢小寫的名稱ROLE表,能夠查詢到表數據。

Windows查詢ROLE表

linux系統

在linux系統下,mysql數據庫區分大小寫。如下圖所示,查詢大寫的名稱ROLE表,datagrip返回了 表不存在的錯誤提示。

Linux查詢ROLE表

而使用全小寫的名稱role,則能夠查詢到表數據。

Linux查詢role表

博主這里使用是docker運行的mysql鏡像,配置文件的路徑為/etc/mysql/mysql.conf.d/mysqld.cnf,添加如下所示的配置,使的mysql不區分大小寫。

low_case_table_names=1

配置完后,重啟mysql服務,這時候再次查看執行結果。

查看執行結果

列名和索引名

在mysql數據庫中,不區分列名和索引名的大小寫。如下圖所示,使用大寫和小寫的id字段都能夠查詢到數據。

不區分列名查詢

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

enter description here

博主微信公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM