docker修改mysql8配置 修改表名區(qū)分大小寫問題

mysql表名是否區(qū)分大小寫是通過lower_case_table_names參數(shù)來設置,登錄mysql后可通過show Variables like ‘%table_names’ 來查看默認的值。

不同系統(tǒng),該參數(shù)的默認值是不同的。

lower_case_table_names = 1 表名存儲在磁盤是小寫的,但是比較的時候是不區(qū)分大小寫

lower_case_table_names=0 表名存儲為給定的大小和比較是區(qū)分大小寫的

lower_case_table_names=2, 表名存儲為給定的大小寫但是比較的時候是小寫的

1:windows環(huán)境默認 0:linux環(huán)境默認 2:macos環(huán)境默認

二、關于linux鏡像中的mysql參數(shù) lower_case_table_names

上面說到linux系統(tǒng)的lower_case_table_names = 0 默認為0,但是通常開發(fā)測試過程中習慣性的sql語句是不區(qū)分大小寫的,需要修改該參數(shù)。

但是在/etc/mysql/my.cnf中直接修改lower_case_table_names = 1 是不可以的,重啟mysql直接導致docker無法啟動,報如下錯誤信息:

Different lower_case_table_names settings for server (‘1’) and data dictionary (‘0’).
因此lower_case_table_names 無法動態(tài)修改。

官方給出了回答

lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.

也就是說如果想修改這個屬性,必須在初始化數(shù)據(jù)庫的時候就要指定該參數(shù)。

通常我們下載的docker mysql 鏡像啟動時會默認初始化,因此想要修改該參數(shù)就要重新初始化docker中的數(shù)據(jù)庫。

三、開始修改mysql鏡像lower_case_table_names參數(shù)

1、docker進入mysql容器,使用命令:

docker exec -it xxxx /bin/bash

2、在docker中安裝工具

docker中可能沒有相關vim工具,需要自己安裝

apt-get update
apt-get install vim

3、修改mysql配置文件,配置文件中在[mysqld]下增加

lower_case_table_names=1

注意:該操作完成后千萬不要重啟docker,否則將無法啟動

/usr/sbin/mysqld --user=mysql --lower-case-table-names=1 --initialize-insecure

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容