linux下mysql表名大小寫敏感的問題


執行sql:

show global variables like '%lower_case%';

lower_case_file_system:表示當前系統文件是否大小寫敏感,只讀參數,無法修改
ON 大小寫不敏感
OFF 大小寫敏感

 

lower_case_table_names:這個選項不僅僅適用於表名的大小寫敏感,同樣適用於數據庫名和表別名。
該變量取值范圍有三個,分別是0、1、2.
設置成0:表名按你寫的SQL大小寫存儲,大寫就大寫小寫就小寫,比較時大小寫敏感。
設置成1:表名轉小寫后存儲到硬盤,比較時大小寫不敏感。
設置成2:表名按你寫的SQL大小寫存儲,大寫就大寫小寫就小寫,比較時統一轉小寫比較。

 

修改方法:

//1.首先進入到docker中的mysql容器,9b33e00a9488為mysql的容器id:
docker exec -it 9b33e00a9488 /bin/bash

//2.安裝vim編輯器,方便修改配置文件(以下兩個命令都是在進入mysql容器后輸入的)
//同步/etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,這樣才能獲取到最新的軟件包。
apt-get update
apt-get install vim

//3.修改mysql的配置文件,如果你不想修改,只是想查看下文件的話,那你不需要安裝vim編輯器,
// 可以直接使用cat my.cnf查看
vim /etc/mysql/my.cnf


在[mysqld]下添加如下:
[mysqld] 
lower_case_table_names=1

保存,退出mysql容器;
執行docker restart MySQL ,重啟MySQL容器即可查看

 再一次輸入以上sql,可以看到結果:

 備注:以上操作只適用於mysql5.7以前的版本,以后的版本如:
MySQL8.0 新增了data dictionary的概念,數據初始化的時候在linux下默認使用lower-case-table-names=0的參數,數據庫啟動的時候

讀取的my.cnf文件中的值。若二者值不一致則在mysql的錯誤日志中記錄報錯信息,參考https://blog.csdn.net/vkingnew/article/details/80613043

 

 

 

 

參考:

MySQL表名大小寫敏感導致的問題

解決Docker安裝MySQL不區分大小寫問題


免責聲明!

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



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