在windows安装mysql倒是没有碰到过这种问题,在linux的有些系统中安装了mysql之后,默认的mysql配置是区分表名大小写的,这句话怎么讲呢?比如说吧,我现在有个表名是a,不管是在客户端还是在程序中操作数据库的时候,如果我写成:

select * from a limit 0,1

是没有问题的,但是如果我写成

select * from A limit 0,1

就会报 "a doesn't exist"就是表不存在的错误,这就令人很费解,如果你不知道的话,也很难想到还有表名会区分大小写这种配置,没错,明明我又表a,为什么会报出表不存在的错误呢?就是因为在linux的有些系统中安装了mysql之后,mysql默认是区分表名的大小写的。

问题:这种配置让我感到很不舒服,该修改这种配置呢?

1.先查看当前的配置

-- 进入mysql交互模式
mysql -uroot -p
-- 查看现有的配置
show variables like "%case%";

结果如下:

image.png

可以看到有两条,“lower_case_table_names”就是控制mysql是否区分表名大小写的配置项,1代表不区分,0代表区分大小写。

2.如何修改mysql区分表名大小写这种配置呢?

        如果你看到的结果为0,而你又想修改的话,你可以这样:

找到你mysql的配置文件my.ini(linux下是my.cnf),打开后找到“[mysqld]”节点,在下面加上一句话:

lower_case_table_names=1

即可,重启mysql,就不用担心表名的大小写问题了。

延伸:

        可能有的同学会有疑问,既然表名区分大小写,字段是不是也区分呢,我该到哪里去配置让字段不区分大小写来着,好消息告诉你,字段你不用多虑,mysql里都是不区分字段的大小写的。

GitHub 加速计划 / li / linux-dash
7
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:5 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐