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

Linux 下 MySQL 設定表名大小寫不敏感 (lower_case_table_names=1)

     編輯:MySQL 綜合教學

Linux 下 MySQL 設定表名大小寫不敏感 (lower_case_table_names=1)

Oracle 遷移 MySQL 時常遇到表名大小寫不匹配報錯。Linux 下 MySQL 預設嚴格區分資料庫名、表名、表別名、變數名大小寫,僅列名、列別名不區分。透過 lower_case_table_names=1 可統一為不敏感模式。

Linux MySQL 大小寫規則速查

物件預設行為
資料庫名區分大小寫
表名區分大小寫
表別名區分大小寫
變數名區分大小寫
列名不區分大小寫
列別名不區分大小寫

Windows 預設全不區分 (檔案系統特性)。

設定步驟 (需 root 權限)

  1. 切換 root
    su - root
  2. 修改配置檔
    sed -i '/\[mysqld\]/a\lower_case_table_names=1' /etc/my.cnf

    或手動編輯 vi /etc/my.cnf,在 [mysqld] 區段新增:

    lower_case_table_names = 1
  3. 重啟 MySQL
    service mysqld restart
  4. 驗證生效
    mysql -uroot -p -e "SHOW VARIABLES LIKE '%case%';"
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | lower_case_file_system | OFF   |
    | lower_case_table_names | 1     |
    +------------------------+-------+

參數值對照

值行為適用場景
0區分大小寫 (Linux 預設)Linux 開發、區分大小寫的遷移
1不區分大小寫 (存儲為小寫)Windows 遷移、Oracle 遷移、跨平台相容
2存儲保留大小寫,比較不區分極少用,特定相容需求

⚠ 關鍵限制:必須在建表前設定

  • 若已有表資料,直接修改參數重啟會導致找不到現有表 (磁碟檔案為大小寫混合,MySQL 尋找小寫檔名)。
  • 遷移流程正確順序:
  • 1. 修改 lower_case_table_names=1 並重啟
    2. 匯入 Schema (表名自動轉小寫建立)
    3. 匯入 Data

    Windows 環境補充

    Windows 下 MySQL 永遠不區分大小寫 (受限於 NTFS 檔案系統),無需配置。跨平台部署時,Linux 端統一設為 1 即可達成行為一致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved