MySQL 將資料庫/表對應到檔案系統目錄/檔案。
Windows(NTFS、FAT32)大小寫不敏感 → 表名不分大小寫。
Linux/Unix(ext4、xfs 等)大小寫敏感 → 表名嚴格區分大小寫。
Mac OS X:HFS+ 預設不敏感,UFS 敏感。
-- Windows:以下兩句等價,第二句不報錯
SELECT * FROM my_table;
SELECT * FROM MY_TABLE;
-- Linux:第二句報錯 Table 'db.MY_TABLE' doesn't exist
SELECT * FROM my_table;
SELECT * FROM MY_TABLE;
lower_case_table_names| 值 | 行為 | 適用場景 |
|---|---|---|
| 0 | 儲存時保留大小寫,比較敏感 | Linux 預設,開發要求大小寫區分 |
| 1 | 儲存轉小寫,比較不敏感 | Windows 預設,跨平台遷移、兼容舊代碼 |
| 2 | 儲存保留大小寫,比較轉小寫 | 極少用,特殊兼容需求 |
[mysqld]
lower_case_table_names=1
重啟 MySQL。注意:若已有大寫表名,需先 RENAME TABLE OldName TO oldname; 全部轉小寫,否則啟動後找不到舊表。
./mysqld_safe --lower_case_table_names=1 &
snake_case)。lower_case_table_names 設定,避免遷移驚喜。hibernate.identifier.quote=true、Laravel 'strict' => false、Entity Framework 對應大小寫策略。mysqldump 導出,腳本中統一 LOWER() 處理識別符。AS a 與 AS A 不同)。lower_case_table_names。