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/程序/工具 里使用大小写的表名均可识别

 

你可能感兴趣的:(采坑记)