Products
GG网络技术分享 2026-04-17 00:51 1
说真的, MySQL里那玩意儿 lower_case_table_names简直是“大小写的灵魂拷问”。有的同学把它当成装逼神器有的同学却主要原因是它在Linux上=0而每天抓狂。 搞一下... 今天 我就把这件事讲得像一锅乱炖——不求条理,只求情绪爆炸顺带扔进几段奇怪的代码和一张莫名其妙的产品对比表,让你读完后还能笑出声。
打开终端,敲:

show variables like '%case%';
如果看到:
| Variable_name | Value |
|---|---|
| lower_case_table_names | 0 |
| lower_case_file_system | OFF |
恭喜,你现在正处在“大小写敏感模式”。这时候想改成=1 相当于 我怀疑... 给数据库装上了防弹眼镜——所有表名都强行变小写,不再区分大小写。
别急着改参数,先把库里那些“高调”的大写表名统统干掉!否则重启后 你会看到类似:
ERROR 1146 : Table 'test.TABLE' doesn't exist
解决办法:
RE不结盟E TABLE TestTable TO testtable;mysqldump --skip-lock-tables --no-data ... | tr 'A-Z' 'a-z'把DDL全转成小写,再重新施行。
import pymysql
conn = pymysql.connect
cur = conn.cursor
cur.execute")
for db, tbl in cur.fetchall:
new_tbl = tbl.lower
cur.execute
conn.commit
# 关键一步:编辑 /etc/my.cnf
# 找到 段落, 如果没有就自己加一段
lower_case_table_names=1 # 把这里改成1
# 记得别忘了下面这句,主要原因是Linux默认是区分大小写
lower_case_file_system=OFF
挺好。 *注意*: 这个变量不能动态修改**,必须重启 MySQL 服务**才会生效。
systemctl restart mysqld # 或者 service mysql restart
# 如果你是用 docker,就 exec 进去 kill -9 $ 再启动容器
# 有些老系统只能直接 /etc/init.d/mysqld restart
# 重启失败?检查日志 /var/log/mysqld.log 看看有没有 “Different lower_case_table_names settings” 报错
If you see:
Different lower_case_table_names settings for server and data dictionary .
Data Dictionary initialization failed.
| # 排名 | 产品名称 & 简介 | 价格 | |
|---|---|---|---|
| —— 数据库管理工具大比拼 —— | |||
| 1️⃣ | DBeaver | 免费 | |
| 2️⃣ | Squirrel SQL Client | ¥199/年 | |
| 3️⃣ | Aqua Data Studio | ¥3989/永久 | |
| 4️⃣ | Mysql Workbench | ||
| 5️⃣ | Navicat Premium | ¥1999 / 永久 | |
Demand feedback