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

MySQL 大小寫敏感配置:lower_case_table_names 參數在 Windows/Linux 下的正確設置

     編輯:MySQL 綜合教學

MySQL 表名大小寫敏感性由 lower_case_table_names 控制,Windows 默認 1(不敏感)、Linux 默認 0(敏感),跨平台遷移、開發生產環境不一致極易導致「表不存在」報錯。本文給出統一配置標準。

一、 參數含義

二、 修改方法

Windows (my.ini)


[mysqld]
lower_case_table_names=1
# 重啟服務生效
net stop mysql & net start mysql

Linux (/etc/my.cnf 或 /etc/mysql/my.cnf)


[mysqld]
lower_case_table_names=1   # 推薦統一為 1,避免大小寫坑
# 重啟
systemctl restart mysqld
# 或
/etc/init.d/mysql restart

⚠️ 若 /etc/my.cnf 不存在,從 /usr/share/mysql/my-*.cnf 複製一份:


cp /usr/share/mysql/my-small.cnf /etc/my.cnf

三、 避坑指南

  1. 初始化前設置:lower_case_table_names 必須在 mysqld --initialize 前生效,否則已建表的 .frm/.ibd 文件名大小寫已固化,修改參數會導致無法訪問舊表。
  2. 開發/測試/生產統一:團隊約定「全部小寫表名、列名」,配置 =1,消除跨環境大小寫差異。
  3. 遷移檢查:Linux → Windows 遷移前,用 SELECT TABLE_NAME FROM information_schema.TABLES 掃描大寫表名,必要時 RENAME TABLE 統一小寫。
  4. InnoDB 表空間文件名:innodb_file_per_table=ON 時,.ibd 文件名跟隨表名大小寫,參數修改後需重建表空間。

四、 驗證


SHOW VARIABLES LIKE 'lower_case_table_names';
CREATE TABLE `TestCase` (id INT);
SHOW TABLES LIKE 'testcase';  -- 若返回行,說明不敏感生效
DROP TABLE `TestCase`;

統一 lower_case_table_names=1、約定小寫命名,是跨平台 MySQL 專案的基石配置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
值行為適用場景
0按給定大小寫存儲、比較敏感Linux 生產、區分大小寫業務
1存儲為小寫、比較不敏感Windows、跨平台兼容、團隊習慣小寫
2按給定大小寫存儲、比較轉小寫極少用,兼容舊應用