lower_case_table_name

linux上是区分表名大小写的,但是可以通过 my.cnf文件中设置不区分!

1、找到my.cnf文件的所在地。

find / -name my.cnf
    

   找到这个文件的位置。我服务器上的位置是 /usr/my.cnf

2、编辑该文件,加入 lower_case_table_name  = 1

cd /usr/
vi my.cnf
   修改后内容如下: 

[mysqld]

lower_case_table_names = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    保存该文件

3、重启mysql 服务

service mysql restart


做完这些你再去查询之前的表例如TEST,你会发现还是不行!(嗯,这个问题坑了我两个小时)

不是说设置这个属性值就好了吗?为什么还不行! lower_case_table_name 无效果 ???

官方解释 ——> 点击打开链接

值 描述
0 表和数据库名存储在磁盘上。名称比较是区分大小写的。
1
表名以小写形式存储在磁盘上,名称比较不区分大小写。MySQL将所有表名转换为小写的存储和查找。

这种行为也适用于数据库名称和表别名。

2
表和数据库名称存储在磁盘上,使用CREATE Table中指定的lettercase或创建数据库语句,

但是MySQL将它们转换为小写的查找。名称比较不区分大小写。这只适用于不区分大小写的文件系统!InnoDB表名和视图名以小写形式存储,

至于小写的case_table_name =1。

因为以前的表已经使用大写的表名存储了,你查询的话只是把现在要查询的表 转成全小写 比如 select * from Test 在执行时他会转成 select * from test ,但是还是对不上以前的表。这个时候你可以把以前的表全都改成小写就可以了。从你把这个值改成1之后建立的表就不会有这种问题了。

 

mysql8新增特性:

lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.

意思是只有当数据库初始化修改lower_case_table_names才能生效。

---------------------
作者:无需有太多
来源:CSDN
原文:https://blog.csdn.net/qq_35170213/article/details/80352574
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-03-12 10:46  localtion  阅读(1055)  评论(0编辑  收藏  举报