MySQL 資料庫與表名對應檔案系統目錄與檔案,因此大小寫敏感度取決於作業系統:Windows 預設不敏感、Linux/Unix 預設敏感。可透過 lower_case_table_names 統一控制。
| 值 | 行為 | 適用場景 |
|---|---|---|
| 0 | 依檔案系統原生大小寫(Linux 區分、Windows 不區分) | Linux 預設、跨平台遷移需一致性時慎用 |
| 1 | 全部轉小寫儲存、比較(不區分大小寫) | Windows 預設、開發環境統一不區分 |
| 2 | 依原大小寫儲存、但比較時轉小寫(僅限不區分大小寫的檔案系統) | 特殊需求極少用 |
# my.ini [mysqld] 區段 lower_case_table_names=0 # 啟用大小寫敏感(需重啟) # 預設為 1
# /etc/my.cnf [mysqld] 區段 lower_case_table_names=1 # 強制不區分大小寫(需重啟) # 預設為 0
關鍵警告:
• 修改此參數需重啟 MySQL 服務生效。
• 現有資料庫/表名若含大寫,修改參數後可能無法存取,建議初始化叢集前決定。
• 跨平台遷移(Linux→Windows 或反向)務必統一此參數,否則會出現「Table doesn't exist」錯誤。
• InnoDB 表名儲存於ibdata系統表空間,參數變更後舊表可能不可見。