mysql设置表名不区分大小写引起的问题

mysql设置表名不区分大小写引起的问题

系统:centos7
数据库:mysql5.7
连接工具:Navicat for mysql

最开始在centos7上安装mysql时并没有设置数据库是否区分大小写,在这种情况下新建了一个数据库uirs,此时建表时表名是大写或者是大小写混合的。因为种种原因需要将数据库迁移到Windows上的mysql中,但是因为Windows上数据设置为了表名不区分大小写,所以在迁移到windows上mysql时表名全部变为了小写,之后又因为种种原因又要将windows上的数据库迁回centos上,于是将windows上数据库导出了一份。因为想着在sql文件中有drop表的操作,于是在导回到centos上时就没有将数据库里的表先删除,结果数据库中含有大写的表并没有删除,又新建了一张小写同名的表。此时才意识到数据库此时的设置是没有设置为不区分大小写,再将数据库配置文件修改设置为不区分大小写重启数据库后又重新导入了一次数据库(因为懒,也没有将所有表删除就直接导入),此时通过Navicat for mysql连接到数据库查看时同名的两张表显示得只有一张表了,然后数据也是正常的,对于数据库的使用也是一切正常,唯一存在疑惑的地方就是本来应该全是小写的表,其中却还含有表名为大写的,当时也没有过多去想。
直到要将数据每天进行备份,因为数据量小所以采用mysqldump的方式将数据库进行备份。可是在进行备份时确出现了如下问题:
在这里插入图片描述
错误显示为表a_ctl_bus在数据库中不唯一
通过Navicat for mysql看了一下,显示确实只有一张表啊,如图:
在这里插入图片描述
为什么会提示表不唯一呢,又通过show tables;看了一下,发现还真有。这才明白了原来是在将数据库改为不区分大小写后,Navicat for mysql就将同名但是大小写不同的表全小写的隐藏了,只显示大写的部分,导入sql语句的时候也只是对大写的表进行了修改,但是在information_schema库中的tables表中依旧纪录了小写的表名,所以在进行备份时就报出了上面那个错。
既然问题的原因找到了,那就好解决了,在将mysql配置文件改为区分大小写后,用Navicat for mysql查看果然隐藏的小写的那部分表就显示出来了,在将重复的表删除一个后,通过mysqldump复制数据库就成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值