Linux 文件系統區分大小寫,導致 MySQL 表名(對應 .frm/.ibd 檔案)預設區分大小寫。若需跨平台相容或習慣不區分,可透過參數調整。
| 物件 | Linux | Windows |
|---|---|---|
| 資料庫名 | 區分 | 不區分 |
| 表名 | 區分 | 不區分 |
| 欄位名 | 不區分 | 不區分 |
| 表別名 | 區分 | 不區分 |
| 變數名 | 區分 | 不區分 |
/etc/my.cnf(或 /etc/mysql/my.cnf),在 [mysqld] 區段加入:lower_case_table_names=1
systemctl restart mysqld 或 service mysql restart。0:區分大小寫(Linux 預設)。資料庫/表名以原始大小寫儲存。1:不區分大小寫。名稱儲存為小寫,查詢時自動轉小寫比對(Windows 預設)。2:儲存原始大小寫,但查詢轉小寫比對(罕用)。RENAME TABLE 全部轉小寫,或用 mysqldump 匯出重建。lower_case_table_names=1 需在初始化資料目錄前設定,否則啟動失敗。SHOW VARIABLES LIKE 'lower_case_table_names';
lower_case_table_names=1 並用小寫命名。--lower-case-table-names=1。正確設定此參數,能避免 90% 的跨平台大小寫Bug。