You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 16.0.4下MySQL 5.7.22无法设置lower_case_table_names变量问题

解决MySQL 5.7.22在Ubuntu 16.04下配置lower_case_table_names失败的问题

这问题我之前帮人排查过好几次,核心是你搞混了MySQL服务器(mysqld)和客户端(mysql)的配置段!

问题根源

lower_case_table_names是MySQL服务器专属的配置参数,用来控制表名的大小写敏感规则,它不属于客户端(mysql命令)的配置项。你之前把这个参数加到了[mysql]段里,客户端启动时会读取这个段的配置,但它根本不认识这个参数,所以才会报错unknown variable 'lower_case_table_names=1'。

另外,这个参数属于启动时生效的只读参数,不能通过SET语句动态修改,所以你进入SQL命令行后改不了它也很正常。

正确的配置步骤

1. 修改服务器配置文件

Ubuntu 16.04搭配MySQL 5.7时,服务器的默认配置文件是/etc/mysql/mysql.conf.d/mysqld.cnf,不是你修改的~/.my.cnf(这个文件主要给客户端用,或者覆盖客户端配置)。

  • 打开配置文件:
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
  • 在[mysqld]这个段下面添加一行:
    lower_case_table_names = 1
    
  • 保存并退出编辑器(nano里按Ctrl+O然后回车,再按Ctrl+X)

2. 重要前置检查

修改这个参数前,必须确保你的数据库中没有已创建的大写表名/库名!如果存在大写名称的对象,先手动把它们改成小写,否则服务重启后会找不到这些对象,甚至导致数据损坏。

3. 重启MySQL服务并验证

  • 先停止服务:
    sudo systemctl stop mysql
    
  • (可选但推荐)备份数据目录,防止意外:
    sudo cp -r /var/lib/mysql /var/lib/mysql_backup
    
  • 启动服务:
    sudo systemctl start mysql
    
  • 进入MySQL客户端验证配置:
    mysql -u root -p
    
    执行查询:
    SELECT @@lower_case_table_names;
    
    如果返回结果是1,说明配置已经生效了。

为什么之前的操作都失败?

  • 把参数加到[mysql]段:客户端不识别服务器的配置参数,直接报错
  • 用命令行--lower_case_table_names=1启动客户端:同样是给客户端传递了服务器专属的参数,客户端无法处理
  • 用SET语句修改:这个参数是只读的,只能在服务器启动时初始化,运行时无法修改

内容的提问来源于stack exchange,提问作者dam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:28:48