Linux資料庫表名大小寫敏感引發的異常
阿新 • • 發佈:2022-03-23
我的問題
最近跑了幾個專案,用的是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.
-
設定成
0
:表名按你寫的SQL大小寫儲存,大寫就大寫小寫就小寫,比較時大小寫敏感。 -
設定成
1
:表名轉小寫後儲存到硬碟,比較時大小寫不敏感。 -
設定成
2
:表名按你寫的SQL大小寫儲存,大寫就大寫小寫就小寫,比較時統一轉小寫比較。
這個選項不僅僅適用於表名的大小寫敏感,同樣適用於資料庫名和表別名。