首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 資料庫/表名大小寫敏感性跨平台差異與統一規範

     編輯:MySQL 資料庫相關知識

底層機制:文件系統決定敏感度

  • Windows:NTFS/FAT 大小寫不敏感 → 表名不敏感。
  • Linux/Unix:ext4/xfs 大小寫敏感 → 表名敏感。
  • macOS:HFS+ 預設不敏感,UFS 敏感。

MySQL 直接將資料庫/表映射為目錄/文件,故敏感度繼承自作業系統。

實戰陷阱

-- Windows 可執行,Linux 報錯 Table 'my_table' doesn't exist
SELECT * FROM my_table WHERE MY_TABLE.col = 1;

同一查詢中混用大小寫在敏感系統會失敗。

統一規範建議

  1. 開發規範:全部小寫建庫建表(lower_case_table_names=1 強制轉小寫存儲)。
  2. 配置固化:my.cnf [mysqld] 區段設定:
    lower_case_table_names=1
  3. 遷移注意:修改該參數需先將現有表名全轉小寫,否則啟動失敗。

參數值對照

Windows 預設 1,Linux 預設 0。跨平台同步建議雙端統一設為 1。

例外:欄位名、別名

  • 欄位名、列別名:所有平台均不敏感。
  • 表別名:敏感(SELECT ... FROM t AS a WHERE a.col=1 OR A.col=2 會報錯)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
值行為適用場景
0敏感,按給定大小寫存儲/比對Linux 生產、需區分大小寫
1不敏感,統一轉小寫存儲/比對Windows、跨平台遷移、統一規範
2存儲保持給定大小寫,比對轉小寫極少用,兼容舊應用