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

出现问题

在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即可!
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页