使用 BINARY 屬性強制欄位區分大小寫:
CREATE TABLE users (
username VARCHAR(50) BINARY
);
使用 BINARY 運算子進行單次查詢的大小寫比對:
SELECT * FROM users WHERE BINARY username = 'Admin';
| 排序規則 | 說明 | 大小寫敏感 |
|---|---|---|
utf8_general_ci | 通用排序,ci = case insensitive | 否 |
utf8_bin | 二進制比較 | 是 |
utf8mb4_0900_ai_ci | MySQL 8.0 預設,支援表情符號 | 否 |
my.ini 中預設 lower_case_table_names=1my.cnf 中預設 lower_case_table_names=0在 Windows 開發、Linux 部署時,若 Windows 表名含大寫字母,遷移到 Linux 會找不到表。
lower_case_table_namesWindows 改為區分大小寫(推薦開發環境與生產一致):
[mysqld]
lower_case_table_names = 0
Linux 改為不區分(不推薦,僅作臨時兼容):
[mysqld]
lower_case_table_names = 1
| 值 | 行為 | 適用場景 |
|---|---|---|
| 0 | 區分大小寫,表名按建表時大小寫儲存 | Linux 生產環境、Windows 開發環境對齊 |
| 1 | 不區分,表名轉小寫儲存,查詢轉小寫比對 | Windows 預設、跨平台兼容舊系統 |
| 2 | 建表按原大小寫,查詢轉小寫比對 | 極少用,特殊兼容需求 |
user_info)lower_case_table_names=0mysqldump --lower-case-table-names=1 強制導出小寫表名