首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL lower_case_table_names 設定後大小寫不敏感但查詢失敗的解決

     編輯:程式設計綜合問答

現象

在 my.cnf 設定 lower_case_table_names = 1 重啟後,原本大寫命名的資料表(如 UserInfo)無法查詢,提示 Table 'db.userinfo' doesn't exist。

原因

lower_case_table_names=1 意味著:

  • 資料表名稱在磁碟上**統一轉為小寫**儲存。
  • SQL 查詢時**不區分大小寫**比對。

若建表時使用大寫(CREATE TABLE UserInfo ...),實際檔案為 userinfo.frm/ibd。之後若程式碼寫死 SELECT * FROM UserInfo,MySQL 會轉為小寫比對,**理論上應可查詢**。但若遷移資料時直接複製大寫檔案名,或手動建立大寫目錄,會導致不一致。

解決步驟

  1. 確認 data_dir 下表檔案全為小寫:ls -l /var/lib/mysql/db/。
  2. 若發現大寫檔案,需在 lower_case_table_names=0 環境下 RENAME TABLE UserInfo TO userinfo; 再切回 1。
  3. 程式碼中統一使用**小寫表名**,避免跨平台部署差異。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved