1. 程式人生 > 其它 >Linux資料庫表名大小寫敏感引發的異常

Linux資料庫表名大小寫敏感引發的異常

我的問題

最近跑了幾個專案,用的是Linux資料庫,總是出現找不到表的問題,百度一下,原來是表名大小寫敏感問題。

變數lower_case_table_names

為什麼本地開發沒問題,但是測試環境就提示表不存在呢?因為本地的windows開發環境,預設是大小寫不敏感。而測試環境的linux是敏感的。
我們在Linux執行命令,檢視自己電腦中的Linux系統變數可以看到:

show variables like '%lower_case_table_names%';

修改變數lower_case_table_names

#修改mysql配置檔案
vi /etc/my.cnf
#增加如下配置選項
[mysqld]
lower_case_table_names=1
#重啟mysql服務
systemctl restart mysqld

mysql docker 容器中的配置檔案位置:

/etc/mysql/my.cnf

如果 docker 中沒有 vim,執行以下命令

apt-get update
apt-get install vim

變數lower_case_table_names的取值

取值範圍有三個,分別是0、1、2.

  1. 設定成0:表名按你寫的SQL大小寫儲存,大寫就大寫小寫就小寫,比較時大小寫敏感。

  2. 設定成1:表名轉小寫後儲存到硬碟,比較時大小寫不敏感。

  3. 設定成2:表名按你寫的SQL大小寫儲存,大寫就大寫小寫就小寫,比較時統一轉小寫比較。

這個選項不僅僅適用於表名的大小寫敏感,同樣適用於資料庫名和表別名。