MySQL Table ‘xxx.xxxxx’ doesn’t exist原因排查

196 阅读1分钟

最近在做毕业设计,因为要在不同电脑上写程序,数据库原先是安装在本地的,来回倒脚本很不方便,就申请了一个阿里云服务器,将数据库、redis等部署到服务器上,很方便,有服务器也可以很方便做很多事情。在导完SQL脚本,程序启动一直有个问题,提示表一直不存在,实际查询有这个表,也有数据,很郁闷,最后发现是linux MySQL对大小写敏感,windows的MySQL对大小写不敏感导致的,就趁机总结一些这个问题。

1.大小写敏感

这个是windows和linux的版本差别,往往发生在从windows上向linux上导入时,由于windows版本对大小写不敏感。 通过查询lower_case_table查询,值为1表示不区分大小写,为0表示区分大小写

show variables like '%lower_case_table_names%';

修改方法

vim /etc/mysql/my.cnf

[mysqld]
lower_case_table_names=1

# 重启
systemctl restart mysql.service

我使用的版本是MySQL8,不支持这么修改,修改完后启动会报错,需要先删除数据目录,然后修改配置,再启动服务,或者直接初始化的时候指定参数,忽略大小写

2.注意版本差别

导入时要格外注意MySQL版本的差别,MySQL的字符集和排序规则等