Mysql 5.7 表名大写遇到的坑 error: 1146: Table 'your_table' doesn't exist

环境

数据库从Mysql5.6导出后导入到Mysql5.7,操作系统是 Centos7

问题

在导入脚本中表名都是大写,导入后无论是命令行、navicat、还是Java代码,均提示表不存在。

Table 'XXX' doesn't exist

原因

原因是安装mysql5.7版本后,linux环境下默认是表名大小写敏感的,如果你的SQL或者工具去查表时用的是小写(一般是这样),而数据库中实际表名里含有大写,就会提示表不存在。

解决

1、首先是将mysql改为忽略表名大小写

主要是 lower_case_table_names=1 这个参数

把它加入到 my.cnf 的 [mysqld] 下面,然后重启Mysql。

 

1、Windows下MySQL的配置文件是my.ini,一般会在安装目录的根目录。

2、Linux下MySQL的配置文件是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找。

3、Linux用rpm包安装的MySQL是不会安装/etc/my.cnf文件的

 

2、如果配置修改前已经有大写表名建好,则需要重新改名

但是此时会发现重启后,还是没有解决问题。

原因是大写表名是在之前就已经导入了,此时需要将所有表名中的大写字母改成小写!

这些都完成后,数据库中表名均已改为小写,此时 Sql/程序/工具 里使用大小写的表名均可识别

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值