| 物件 | Linux 預設 | Windows 預設 |
| 資料庫名/表名 | 嚴格區分大小寫 | 不區分 |
| 表別名 | 嚴格區分大小寫 | 不區分 |
| 欄位名/欄位別名 | 全部忽略大小寫 | 不區分 |
| 變數名 | 嚴格區分大小寫 | 不區分 |
修改表名大小寫敏感度
編輯 /etc/my.cnf,在 [mysqld] 區段新增:
lower_case_table_names = 1
0:區分大小寫(Linux 預設)
1:不區分大小寫(儲存為小寫,比較轉小寫)
2:儲存保留大小寫,但比較轉小寫(罕用)
修改後**必須重啟 MySQL 服務**生效。
⚠️ 遷移風險警告
**已有資料的資料庫修改此參數極高風險**:
- 表檔案實體名稱會改變(大小寫轉換)
- 可能導致現有表無法存取、資料遺失
- **建議**:新實例規劃階段決定,遷移時全量重建
欄位值大小寫敏感查詢
若需在查詢時區分欄位**值**的大小寫,欄位需具備 BINARY 屬性:
建表時指定
CREATE TABLE T (
A VARCHAR(10) BINARY
);
ALTER 修改既有欄位
ALTER TABLE `tablename` MODIFY COLUMN `colname` VARCHAR(45) BINARY;
GUI 工具
MySQL Table Editor 中直接勾選 BINARY 選項。
實務建議
- **統一命名規範**:全小寫 + 底線分隔(如
user_order),規避跨平台大小寫坑
- **應用層統一轉換**:查詢前將表名/欄位名轉小寫
- **避免依賴大小寫區分業務邏輯**
- 上一篇文章: Windows CMD 命令列下 MySQL 資料庫備份與還原實操指令
- 下一篇文章: 大流量網站 MySQL 關鍵參數調優實戰:back_log、key_buffer、max_connections 等 10 參數配置指南
Copyright ©
程式碼之家 All Rights Reserved