Linux MySQL資料庫數據庫大小寫敏感問題與dockercp命令解決

MySQL大小寫規則

MySQL在Linux下資料庫名、表名、列名、別名大小寫規則是這樣的:

1、資料庫名與表名是嚴格區分大小寫的;

2、表的別名是嚴格區分大小寫的;

3、列名與列的別名在所有的情況下均是忽略大小寫的;

4、變量名也是嚴格區分大小寫的;

MySQL在Windows下都不區分大小寫。

避免這個問題的一種辦法是以Docker 啟動mysql容器時添加 –lower_case_table_names=1 參數啟動。

缺省地在 Windows 中這個選項為 1 ,在 Unix 中為 0。如 果 lower_case_table_names 為 1 ,MySQL 將在存儲與查找時將所有的表名轉換為小寫字線。(從 MySQL 4.0.2 開始,這個選項同樣適用於資料庫名。) 註意,當你更改這個選項時,你必須在啟動 mysqld 前首先將老的表名轉換為小寫字母。

也可以通過在MySQL的配置文件mysqld.cnf 中增加一行:

lower_case_table_names = 1

其中 0:區分大小寫,1:不區分大小寫

docker cp 命令

$ docker cp CONTAINER:FILEPATH LOCALFILEPATH
$ vi LOCALFILEPATH
$ docker cp LOCALFILEPATH CONTAINER:FILEPATH

可以將本地的mysqld.cnf 文件拷入到容器中,可以將容器中的文件拷出,解決瞭用

docker exec:隻能對運行中的容器操作文件

docker run: 加-v映射文件目錄出來 參數隻能創建新容器

這兩個痛點,重新將修改正確的cnf文件拷貝回container。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *