首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 下 MySQL 表名大小寫敏感度設定詳解

     編輯:MySQL 綜合教學

Linux 文件系統區分大小寫,導致 MySQL 表名(對應 .frm/.ibd 檔案)預設區分大小寫。若需跨平台相容或習慣不區分,可透過參數調整。

預設行為

物件LinuxWindows
資料庫名區分不區分
表名區分不區分
欄位名不區分不區分
表別名區分不區分
變數名區分不區分

修改設定:lower_case_table_names

  1. 編輯 /etc/my.cnf(或 /etc/mysql/my.cnf),在 [mysqld] 區段加入:
lower_case_table_names=1
  1. 重啟 MySQL 服務:systemctl restart mysqld 或 service mysql restart。

參數值對照

  • 0:區分大小寫(Linux 預設)。資料庫/表名以原始大小寫儲存。
  • 1:不區分大小寫。名稱儲存為小寫,查詢時自動轉小寫比對(Windows 預設)。
  • 2:儲存原始大小寫,但查詢轉小寫比對(罕用)。

重要注意事項

  1. 資料遷移風險:已有資料庫從 0 改為 1 會導致找不到表(檔案名仍為混合大小寫)。需先 RENAME TABLE 全部轉小寫,或用 mysqldump 匯出重建。
  2. InnoDB 共享表空間:lower_case_table_names=1 需在初始化資料目錄前設定,否則啟動失敗。
  3. 跨平台開發:團隊混用 Windows/Linux 時,強烈建議統一設為 1,並規範所有物件命名使用小寫+底線。
  4. 分區表、外鍵、視圖 皆受此參數影響。

驗證設定

SHOW VARIABLES LIKE 'lower_case_table_names';

最佳實踐

  • 新專案一律設 lower_case_table_names=1 並用小寫命名。
  • 既有專案遷移時,評估改動成本,必要時維持 0 並在應用層統一大小寫。
  • Docker 部署時,在啟動命令加入 --lower-case-table-names=1。

正確設定此參數,能避免 90% 的跨平台大小寫Bug。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved