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
文件的话,我看有frm和ibd文件,这个如何验证是正确的节奏呢?(上周这个表还好好的,本周突然有问题了)
#3
show create table A;看一下存储引擎。 如果是innodb 则麻烦,可以是文件格式损坏, 如果是myisam则看一下 MYD是否存在。
#4
文件只有frm和ibd两个,其他的表都是如此,应该都是innodb
show create table A,直接就报错,还是表不存在
#5
应该是损坏或被破坏了吧
如果知道表结构,可以建个新表,尝试恢复 ibd 数据,如果不知道表结构,可以官网下载工具,用里面的 mysqlfrm 工具查看 frm 文件对应的表结构
如果知道表结构,可以建个新表,尝试恢复 ibd 数据,如果不知道表结构,可以官网下载工具,用里面的 mysqlfrm 工具查看 frm 文件对应的表结构
#6
可以导出 删掉重建吗
#7
哦了,问题终于解决了,原来是lower_case_table_names这个参数在作怪,创建表之前这个参数是默认的0,因此创建的表都是大小写敏感的,结果后面改了一下参数为1了,大小写不敏感了,查询的时候不管是select大写还是小写,统统都转换成小写了,而表名其实是大写的,所以才报错找不到表的
#1
数据库目录下有 A.frm 文件,则 show tables 就会显示有 A 表,并不验证这个 A.frm 是否是表结构文件,也不验证这个文件对应的数据文件是否存在
查表的时候如果无法读取,则错误信息就是表不存在
所以你要真正检查一下数据目录下是否相关的文件为齐全,并且是正确的结构
查表的时候如果无法读取,则错误信息就是表不存在
所以你要真正检查一下数据目录下是否相关的文件为齐全,并且是正确的结构
#2
文件的话,我看有frm和ibd文件,这个如何验证是正确的节奏呢?(上周这个表还好好的,本周突然有问题了)
#3
show create table A;看一下存储引擎。 如果是innodb 则麻烦,可以是文件格式损坏, 如果是myisam则看一下 MYD是否存在。
#4
文件只有frm和ibd两个,其他的表都是如此,应该都是innodb
show create table A,直接就报错,还是表不存在
#5
应该是损坏或被破坏了吧
如果知道表结构,可以建个新表,尝试恢复 ibd 数据,如果不知道表结构,可以官网下载工具,用里面的 mysqlfrm 工具查看 frm 文件对应的表结构
如果知道表结构,可以建个新表,尝试恢复 ibd 数据,如果不知道表结构,可以官网下载工具,用里面的 mysqlfrm 工具查看 frm 文件对应的表结构
#6
可以导出 删掉重建吗
#7
哦了,问题终于解决了,原来是lower_case_table_names这个参数在作怪,创建表之前这个参数是默认的0,因此创建的表都是大小写敏感的,结果后面改了一下参数为1了,大小写不敏感了,查询的时候不管是select大写还是小写,统统都转换成小写了,而表名其实是大写的,所以才报错找不到表的