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

Linux MySQL 報錯「Table 'xxx' doesn't exist」實為大小寫敏感導致

     編輯:MySQL 綜合教學

Linux MySQL 報錯「Table 'xxx' doesn't exist」實為大小寫敏感導致

在 Linux 上部署 MySQL 時,明明建立了表 UserInfo,查詢 SELECT * FROM userinfo 卻報錯 Table 'db.userinfo' doesn't exist。根因:**Linux 文件系統區分大小寫,MySQL 預設將表名對應到文件名,導致表名大小寫敏感**。

解決方案:設定 lower_case_table_names=1

  1. 編輯配置檔 /etc/my.cnf (或 /etc/mysql/my.cnf),在 [mysqld] 區段新增:
    lower_case_table_names=1
  2. 重啟 MySQL:systemctl restart mysqld

參數值說明:

  • 0 (Linux 預設):**區分大小寫**,表名按建立時大小寫存儲/比對。
  • 1:**不區分大小寫**,表名統一轉小寫存儲/比對 (Windows 預設行為)。
  • 2:建立時保留大小寫,但比對時轉小寫 (僅限不區分大小寫的文件系統,如 macOS APFS/HFS+)。

若系統無 my.cnf,可複製範本建立

cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
# 然後編輯加入 lower_case_table_names=1

遷移既有資料庫的注意事項

  • 修改參數後,**現有表名不會自動重命名**,需手動 RENAME TABLE 統一為小寫,或匯出 SQL 重建。
  • 外鍵、視覺、預存程序內引用的表名也需同步調整。
  • 跨平台遷移 (Windows→Linux) 時,建議**遷移前在來源端先設為 1 並重建**,避免大小寫不一致導致匯入失敗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved