当前位置:   article > 正文

Mysql表名忽略大小写配置及注意事项_mysql 大小写忽略

mysql 大小写忽略

mysql表忽略大小写

因为linux下mysql默认是要区分表名大小写的。mysql是否区分大小写设置是由参数lower _ case _ table _ names决定的,其中:

lower_case_table_names = 0
区分大小写(即对表名大小写敏感),默认是这种设置。这样设置后,在mysql里创建的表名带不带大写字母都没有影响,都可以正常读出和被引用。变量lower_case_file_system说明是否数据目录所在的文件系统对文件名的大小写敏感,其中:ON说明对文件名的大小写不敏感,OFF表示

SHOW VARIABLES LIKE ‘%case%’

Variables _nameValue
lower_case_file_systemON
lower_case_table_names0

lower_case_table_names = 1
不区分大小写(即对表名大小写不敏感)。这样设置后,表名在硬盘上以小写保存,MySQL将所有表名转换为小写存储和查找表上。该行为也适合数据库名和表的别名。

SHOW VARIABLES LIKE ‘%case%’

Variables _nameValue
lower_case_file_systemON
lower_case_table_names1

也就是说,mysql设置为不分区大小写后,创建库或表时,不管创建时使用大写字母,创建成功后,都是强制以小写保存!

配置Mysql表明忽略大小写

修改mysql为不区分表名大小写设置:

[root@test-huanqiu ~]# mysqladmin -uroot -p shutdown    //以安全模式关闭数据库
[root@test-huanqiu ~]# vi /etc/my.cnf                  //添加下面一行设置
.....
[mysqld]
lower_case_table_names=1
.....
[root@test-huanqiu ~]# service mysqld start          //启动mysql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

出现问题

在linux环境中,数据库中表存在大小写时,进行设置 lower_case_table_names = 1 后,将调用数据库表的时候报表不存在,但是通过show tables任然可以查看到有这张表的存在。

解决办法

  1. 先在my.cnf里将lower_case_table_names参数再次调整为0,改成区分大小写
  2. 然后mysqladmin -uroot -p shutdown 以安全模式关闭数据库
  3. 登陆mysql数据库,”alter table 旧表名 rename 新表名” 将带大写字母的旧表改为小写表名
  4. 最后再启动mysql即可!
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/494968
推荐阅读
相关标签
  

闽ICP备14008679号