在 my.cnf 設定 lower_case_table_names = 1 重啟後,原本大寫命名的資料表(如 UserInfo)無法查詢,提示 Table 'db.userinfo' doesn't exist。
lower_case_table_names=1 意味著:
若建表時使用大寫(CREATE TABLE UserInfo ...),實際檔案為 userinfo.frm/ibd。之後若程式碼寫死 SELECT * FROM UserInfo,MySQL 會轉為小寫比對,**理論上應可查詢**。但若遷移資料時直接複製大寫檔案名,或手動建立大寫目錄,會導致不一致。
data_dir 下表檔案全為小寫:ls -l /var/lib/mysql/db/。lower_case_table_names=0 環境下 RENAME TABLE UserInfo TO userinfo; 再切回 1。