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