在docker安裝mysql後,進行專案連線資料庫,發現查詢的表不存在了:table '***x.***x' doesn't exist
問題在於mysql大小寫敏感的配置
linux下:
windows下:
lower_case_table_names 引數說明
引數值解釋
0使用create table或create database語句指定的大小寫字母在硬碟上儲存表名和資料庫名。名稱比較對大小寫敏感。在大小寫不敏感的作業系統如windows或mac os x上我們不能將該引數設為0,如果在大小寫不敏感的檔案系統上將–lowercase-table-names強制設為0,並且使用不同的大小寫訪問myisam表名,可能會導致索引破壞。
1表名在硬碟上以小寫儲存,名稱比較對大小寫不敏感。mysql將所有表名轉換為小寫在儲存和查詢表上。該行為也適合資料庫名和表的別名。該值為windows的預設值。
2表名和資料庫名在硬碟上使用create table或create database語句指定的大小寫字母進行儲存,但mysql將它們轉換為小寫在查詢表上。名稱比較對大小寫不敏感,即按照大小寫來儲存,按照小寫來比較。注釋:只在對大小寫不敏感的檔案系統上適用! innodb表名用小寫儲存。
docker 部署 mysql 並修改為大小寫不敏感
啟動編輯配置檔案: vim mysqld.cnf
在[mysqld]下新增 lower_case_table_names=1
退出重啟
遇到問題:
通過docker容器內進行修改配置時發現容器無法啟動執行了!!!報錯:[server] different lower_case_table_names settings for server ('1') and data dictionary ('0').
發現容器無法啟動不能進入容器使用vim修改配置,可以將容器的配置檔案拷貝出來修改再拷貝回去,關鍵是要知道檔案路徑
修改配置後無法啟動的原因好像是在修改配置前沒有先刪除/var/lib/mysql/ 中的資料:rm -rf /var/lib/mysql 。但是發現資源在占用無法刪除!!!
折騰了半天還是無法通過修改配置忽略大小寫問題。索性刪掉容器重新啟動(直接在docker啟動的時候,新增引數,設定為對小寫不敏感)
後面遇到再研究吧!!!
參考:
sed忽略大小寫引數 vim 查詢時忽略大小寫
預設情況下 vim 的查詢都是區分大小寫的,這種查詢方式有利於準確快速的定位到目標,但是有時候vim的使用者也不一定能夠確認那個單詞的大小寫情況,這種情況下就要用到大小寫忽略了.實現這個操作有兩種方式.方式1 指令設定 set ic ignorecase 的縮寫 忽略大小寫 set noic noi...
MSYQL忽略大小寫
linux下mysql預設是要區分表名大小寫的。mysql是否區分大小寫設定是由引數 lower case table names決定的,其中 1 lower case table names 0 區分大小寫 即對錶名大小寫敏感 預設是這種設定。這樣設定後,在mysql裡建立的表名帶不帶大寫字母都沒...
MySQL查詢忽略大小寫
離離原上草,一歲一枯榮 在mysql中,有可能會遇到查詢大小寫的問題.這個時候可以修改欄位的排序規則來達到忽略大小寫的目的 或者用alert語句修改也可以 alter table tablename modify column columnname varchar 50 character set ...