在 Linux 上部署 MySQL 時,明明建立了表 UserInfo,查詢 SELECT * FROM userinfo 卻報錯 Table 'db.userinfo' doesn't exist。根因:**Linux 文件系統區分大小寫,MySQL 預設將表名對應到文件名,導致表名大小寫敏感**。
lower_case_table_names=1/etc/my.cnf (或 /etc/mysql/my.cnf),在 [mysqld] 區段新增:lower_case_table_names=1systemctl 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 重建。