赞
踩
在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%";
结果如下:
可以看到有两条,“lower_case_table_names”就是控制mysql是否区分表名大小写的配置项,1代表不区分,0代表区分大小写。
2.如何修改mysql区分表名大小写这种配置呢?
如果你看到的结果为0,而你又想修改的话,你可以这样:
找到你mysql的配置文件my.ini(linux下是my.cnf),打开后找到“[mysqld]”节点,在下面加上一句话:
lower_case_table_names=1
即可,重启mysql,就不用担心表名的大小写问题了。
延伸:
可能有的同学会有疑问,既然表名区分大小写,字段是不是也区分呢,我该到哪里去配置让字段不区分大小写来着,好消息告诉你,字段你不用多虑,mysql里都是不区分字段的大小写的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。