為了使用大寫字母當作資料表名稱,開啟my.ini,在[mysqld]標籤下任意位置加上這行lower_case_tables_name=2,卻導致資料庫無法連線
方法1:若是使用MySQL WorkBench工具,在MySQL WorkBench/Server/OptionsFile,設定lower_case_tables_name=2
方法2:直接修改組態檔
tip:開啟my.ini,在[mysqld]標籤下任意位置加上這行lower_case_tables_name=2
step1:(ProgramData資料夾是隱藏檔,不要誤判成ProgramFile資料夾)
C:\ProgramData\MySQL\MySQL Server 5.7\ 先將此資料夾的內容允許修改
step2:開啟C:\ProgramData\MySQL\MySQL Server 5.7\my.ini,在[mysqld]標籤下方任意空白處加上這行lower_case_tables_name=2
筆記1:我遇到的問題翻遍google繁簡英網站都查不到,故留個紀錄
我的MYSQL一開始是安裝5.6版,後來更新成5.7版,但是工具的組態檔文字路徑仍保留C:\ProgramData\MySQL\MySQL Server 5.6\my.ini,當我異動了my.ini增加這行lower_case_tables_name=2,MySQL根據上面這個路徑是找不到組態的,於是乎發生資料庫無法連線,把這行lower_case_tables_name=2刪掉後又能正常連線。一開始一直無法理解為何無法connect,研判是因此應用程式會去找MY SQL SERVER 5.6資料夾內的my.ini,但事實上my.ini實體資料夾是在MY SQL SERVER 5.7內,若資料夾名稱改為5.6來配合組態檔文字路徑設定也不行
故我將my.ini加上lower_case_tables_name=2設定區分大小寫之後,先新增一個connection指向正確的my.ini路徑,用這個connection連線來嘗試修改資料表名稱為大寫,成功新增大寫資料表名稱。
此時再用舊的connection去查看MySQL WorkBench/Server/OptionsFile設定,發覺舊的connection它找不到my.ini而且lower_case_tables_name仍為未更改時的數值,於是發現問題關鍵,便將無法正確指向組態檔的connection刪掉(此connection的組態設定是灰底,連改都不能改,如果可以改直接改就好)
當設定好lower_case_tables_name=2,開啟MySQL WorkBench會出現警告視窗,提醒你注意不區分大小寫可能會發生問題
筆記2:lower_case_tables_name=2,可以新增大寫的資料表名稱,但是修改的話不能直接小寫改大寫
ALTER TABLE table_name RENAME TABLE_NAME; -- 失敗
ALTER TABLE table_nam e RENAME TABLE_NAME1; -- 要轉個彎:先隨便改名
ALTER TABLE table_name1 RENAME TABLE_NAME: -- 再改回來
因為lower_case_tables_name=2是保留大寫資料表名稱,但是在做select之類的資料庫指令時,仍視為大小寫相同,所以table_name和TABLE_NAME之間名稱無法互相取代
以上提供參考