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
版权声明:本文为博主原创文章,转载请附上博文链接!