解決Docker容器中無法修改MySQL大小寫敏感問題

MySQL大小寫敏感的另類解決方案

項目測試環境的數據庫出現大小寫敏感的問題,但之前圖省事,使用docker方式運行,配置文件沒有外置,現在怎麼辦?

參數

mysql是通過lower_case_table_names參數來控制大小寫敏感的,該參數在[mysqld]結點下。

  1. 關於lower_case_table_names參數對錶名稱或數據庫名稱大小寫敏感的控制。
  2. Unix下默認爲0,也就是大小寫敏感的;Windows下默認爲1,不敏感;macOS默認爲2,存儲區分大小寫,但是在查詢時會轉換爲小寫。
  3. 對於在大小寫不敏感的系統(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

刪除之前異常的表,問題解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章