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

Linux 下設定 MySQL 表名不區分大小寫

     編輯:MySQL 綜合教學

Linux 下設定 MySQL 表名不區分大小寫

MySQL 在 Linux 上預設區分資料庫名與表名大小寫(受檔案系統影響),而在 Windows 上則不區分。透過 lower_case_table_names 參數可統一行為。

預設大小寫規則

識別符類型LinuxWindows
資料庫名 / 表名嚴格區分不區分
表別名嚴格區分不區分
欄位名 / 欄位別名不區分不區分
變數名嚴格區分不區分

設定方法

  1. 以 root 身分編輯配置檔:
    vi /etc/my.cnf(或 /etc/mysql/my.cnf)
  2. 在 [mysqld] 區段新增:
    lower_case_table_names=1
  3. 重啟 MySQL 服務:
    service mysqld restart

參數值說明

  • 0(預設):區分大小寫,資料庫/表名按指定大小寫儲存。
  • 1:不區分大小寫,所有名稱轉為小寫儲存與比較。
  • 2:儲存時保留大小寫,但比較時轉為小寫(僅限不區分大小寫的檔案系統)。

完整配置範例

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
# 新增此行
lower_case_table_names=1

驗證設定

SHOW VARIABLES LIKE 'lower_case_table_names';
-- 結果應為 1

CREATE TABLE TestTable (id INT);
SELECT * FROM testtable;  -- 應可正常查詢

Windows 特殊說明

Windows 下即使設定 lower_case_table_names=0,查詢時仍不區分大小寫;僅影響匯入匯出時的檔案名稱大小寫保留。

欄位值大小寫敏感查詢

若需讓欄位值比較區分大小寫,需在欄位定義加 BINARY 屬性或查詢時用 BINARY 關鍵字:

-- 建表時指定
CREATE TABLE t (col VARCHAR(10) BINARY);

-- 修改既有欄位
ALTER TABLE t MODIFY col VARCHAR(10) BINARY;

-- 查詢時指定
SELECT * FROM t WHERE BINARY col = 'AbC';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved