mysql从在A表,但是select的时候提示不存在

时间:2021-10-21 11:34:12
--问题描述
use scm之后,切换到scm数据库;
show tables之后,显示有A表;
select * from A之后报表不存在;
在此数据库下我新建表B,select * from B成功;

--处理方式
已处理大小写敏感问题,mysql也重启了,表也进行了repair修复

--结果
没一点作用,还是报表A不存在,哪位大神知道是啥情况吗?

7 个解决方案

#1


数据库目录下有 A.frm 文件,则 show tables 就会显示有 A 表,并不验证这个 A.frm 是否是表结构文件,也不验证这个文件对应的数据文件是否存在
查表的时候如果无法读取,则错误信息就是表不存在
所以你要真正检查一下数据目录下是否相关的文件为齐全,并且是正确的结构

#2


引用 1 楼 zjcxc 的回复:
数据库目录下有 A.frm 文件,则 show tables 就会显示有 A 表,并不验证这个 A.frm 是否是表结构文件,也不验证这个文件对应的数据文件是否存在
查表的时候如果无法读取,则错误信息就是表不存在
所以你要真正检查一下数据目录下是否相关的文件为齐全,并且是正确的结构

文件的话,我看有frm和ibd文件,这个如何验证是正确的节奏呢?(上周这个表还好好的,本周突然有问题了)

#3


show create table A;看一下存储引擎。 如果是innodb 则麻烦,可以是文件格式损坏, 如果是myisam则看一下 MYD是否存在。

#4


引用 3 楼 ACMAIN_CHM 的回复:
show create table A;看一下存储引擎。 如果是innodb 则麻烦,可以是文件格式损坏, 如果是myisam则看一下 MYD是否存在。

文件只有frm和ibd两个,其他的表都是如此,应该都是innodb
show create table A,直接就报错,还是表不存在

#5


应该是损坏或被破坏了吧
如果知道表结构,可以建个新表,尝试恢复 ibd 数据,如果不知道表结构,可以官网下载工具,用里面的 mysqlfrm 工具查看 frm 文件对应的表结构

#6


可以导出  删掉重建吗 

#7


哦了,问题终于解决了,原来是lower_case_table_names这个参数在作怪,创建表之前这个参数是默认的0,因此创建的表都是大小写敏感的,结果后面改了一下参数为1了,大小写不敏感了,查询的时候不管是select大写还是小写,统统都转换成小写了,而表名其实是大写的,所以才报错找不到表的

#1


数据库目录下有 A.frm 文件,则 show tables 就会显示有 A 表,并不验证这个 A.frm 是否是表结构文件,也不验证这个文件对应的数据文件是否存在
查表的时候如果无法读取,则错误信息就是表不存在
所以你要真正检查一下数据目录下是否相关的文件为齐全,并且是正确的结构

#2


引用 1 楼 zjcxc 的回复:
数据库目录下有 A.frm 文件,则 show tables 就会显示有 A 表,并不验证这个 A.frm 是否是表结构文件,也不验证这个文件对应的数据文件是否存在
查表的时候如果无法读取,则错误信息就是表不存在
所以你要真正检查一下数据目录下是否相关的文件为齐全,并且是正确的结构

文件的话,我看有frm和ibd文件,这个如何验证是正确的节奏呢?(上周这个表还好好的,本周突然有问题了)

#3


show create table A;看一下存储引擎。 如果是innodb 则麻烦,可以是文件格式损坏, 如果是myisam则看一下 MYD是否存在。

#4


引用 3 楼 ACMAIN_CHM 的回复:
show create table A;看一下存储引擎。 如果是innodb 则麻烦,可以是文件格式损坏, 如果是myisam则看一下 MYD是否存在。

文件只有frm和ibd两个,其他的表都是如此,应该都是innodb
show create table A,直接就报错,还是表不存在

#5


应该是损坏或被破坏了吧
如果知道表结构,可以建个新表,尝试恢复 ibd 数据,如果不知道表结构,可以官网下载工具,用里面的 mysqlfrm 工具查看 frm 文件对应的表结构

#6


可以导出  删掉重建吗 

#7


哦了,问题终于解决了,原来是lower_case_table_names这个参数在作怪,创建表之前这个参数是默认的0,因此创建的表都是大小写敏感的,结果后面改了一下参数为1了,大小写不敏感了,查询的时候不管是select大写还是小写,统统都转换成小写了,而表名其实是大写的,所以才报错找不到表的