MySQL大小寫敏感的另類解決方案
項目測試環境的數據庫出現大小寫敏感的問題,但之前圖省事,使用docker方式運行,配置文件沒有外置,現在怎麼辦?
參數
mysql是通過lower_case_table_names參數來控制大小寫敏感的,該參數在[mysqld]結點下。
- 關於lower_case_table_names參數對錶名稱或數據庫名稱大小寫敏感的控制。
- Unix下默認爲0,也就是大小寫敏感的;Windows下默認爲1,不敏感;macOS默認爲2,存儲區分大小寫,但是在查詢時會轉換爲小寫。
- 對於在大小寫不敏感的系統(Windows和macOS)不能將該字段設置爲0
排查
先確定一下數據庫
show variables like 'lower%'
顯示 lower_case_table_names 0
備註
其中 0:區分大小寫,1:不區分大小寫
MySQL在Linux下數據庫名、表名、列名、別名大小寫規則是這樣的:
1、數據庫名與表名是嚴格區分大小寫的;
2、表的別名是嚴格區分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、 變量名也是嚴格區分大小寫的;
修改
那就嘗試直接在docker裏修改配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
提示未安裝vim
換最基礎的vi
vi /etc/mysql/mysql.conf.d/mysqld.cnf
還是提示未安裝vi
那就自己安裝vim
yum install vim
yum 也沒有
。。。。。這個mysql的centos容器應該是一個最小化的環境
mysql的配置沒法修改了,難道要把表導出再新配置一個mysql,想想其他的辦法,
複製一個vim 安裝包進去,或者更直接把mysqld.cnf複製出來修改再覆蓋回去試試
備註
從容器裏面拷文件到宿主機
docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /home
從宿主機拷文件到容器裏面
docker cp /home/mysqld.cnf mysql:/etc/mysql/mysql.conf.d/
驗證
修改完重啓數據庫再次驗證
show variables like 'lower%'
顯示 lower_case_table_names 1