首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 大小寫敏感度配置:Windows vs Linux 差異與修改指南

     編輯:MySQL 綜合教學

預設行為對照表

物件WindowsLinux
表名不敏感敏感
變數名不敏感敏感
字欄值不敏感敏感

核心參數:lower_case_table_names

# my.cnf / my.ini
[mysqld]
lower_case_table_names = 1  # 0=敏感,1=不敏感(Windows 預設),2=存儲按原大小寫但比較不敏感
  • 0:區分大小寫,Linux 預設。
  • 1:不區分大小寫,表名儲存為小寫,Windows/macOS 預設。
  • 2:儲存保持原大小寫,但比較時轉小寫(僅限不區分大小寫的檔案系統)。

警告:修改此參數需在資料庫初始化前設定,否則現有表名大小寫不一致會導致無法存取。

字欄值大小寫敏感控制

建表時指定

CREATE TABLE t (
    col VARCHAR(10) BINARY
);

修改既有欄位

ALTER TABLE `tablename` MODIFY COLUMN `colname` VARCHAR(45) BINARY;

工具操作

Navicat / Workbench 等 GUI 工具可在欄位屬性中勾選 Binary 或將 Collation 設為 utf8_bin / utf8mb4_bin。

常見誤區

❌ 直接修改表的預設 Collation 為 utf8_bin 並不會自動套用至既有字元型欄位,必須逐欄位執行 ALTER TABLE ... MODIFY COLUMN ... BINARY。

最佳實踐建議

  1. 開發環境統一 Linux,lower_case_table_names = 0,養成嚴謹命名習慣。
  2. 跨平台遷移時,先用 mysqldump 導出,再在目標庫建立表結構,避免大小寫衝突。
  3. 業務需不分大小寫查詢時,欄位加 BINARY 或使用 COLLATE utf8mb4_general_ci 明確指定排序規則。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved