表存在,表数据文件也存在,报ERROR 1146 (42S02): Table 'xxx.xxx' doesn't exist

时间:2021-06-25 08:23:55
select或desc表,提示ERROR 1146 (42S02): Table 'product_manager.product' doesn't exist这个错误,请在线的朋友指教,这问题比较急,非常感谢!
操作步聚:
use product_manager;
show tables; 有product这张表
desc 或 select product提示上面的错误。

在mysql的datadir目录下也有product.frm文件。尝试过一些方法来解决,但都没用,比如将product.frm放到其它数据库中,重新建表。数据库只开启了错误日记功能。请求支援,万分感谢!!!!

12 个解决方案

#1


你这个是innodb表,可见可能是ibdata1文件丢失或者损坏。 如果你是独立表空间还是可以恢复的,如果是共享表空间,则数据无法恢复喽。 查看此参数innodb_file_per_table

#2


show create table product;

看一下,如果是innodb 引擎,则说明是一楼中描述的问题,ibdata1文件故障了。

如果是myisam 则,想办法去找一下product.idx

#3


我的数据库版本是5.5.34,在mysql的配置文件中找不到innodb_file_per_table参数配置,请问是看这个参数来得知表空间是独立的还是共享的吗?另外,在mysql的dataidr目录中有ibdata1文件
引用 1 楼 xtdhqdhq 的回复:
你这个是innodb表,可见可能是ibdata1文件丢失或者损坏。 如果你是独立表空间还是可以恢复的,如果是共享表空间,则数据无法恢复喽。 查看此参数innodb_file_per_table

#4


执行show create table product;命令也是提示ERROR 1146 (42S02): Table 'product_manager.product' doesn't exist这个错误,请问这是ibdata1文件故障还是myisam问题?谢谢!
引用 2 楼 ACMAIN_CHM 的回复:
show create table product;

看一下,如果是innodb 引擎,则说明是一楼中描述的问题,ibdata1文件故障了。

如果是myisam 则,想办法去找一下product.idx

#5


引用 3 楼 xyang81 的回复:
我的数据库版本是5.5.34,在mysql的配置文件中找不到innodb_file_per_table参数配置,请问是看这个参数来得知表空间是独立的还是共享的吗?另外,在mysql的dataidr目录中有ibdata1文件
Quote: 引用 1 楼 xtdhqdhq 的回复:

你这个是innodb表,可见可能是ibdata1文件丢失或者损坏。 如果你是独立表空间还是可以恢复的,如果是共享表空间,则数据无法恢复喽。 查看此参数innodb_file_per_table


SHOW GLOBAL VARIABLES; 查看这个参数

#6


你确认你这张表是innodb 引擎的吗?如果是,那么其它innodb 引擎的表呢,还正常吗?

#7


执行SHOW GLOBAL VARIABLES; 命令显示innodb_file_per_table的value是OFF状态
引用 5 楼 xtdhqdhq 的回复:
Quote: 引用 3 楼 xyang81 的回复:

我的数据库版本是5.5.34,在mysql的配置文件中找不到innodb_file_per_table参数配置,请问是看这个参数来得知表空间是独立的还是共享的吗?另外,在mysql的dataidr目录中有ibdata1文件
Quote: 引用 1 楼 xtdhqdhq 的回复:

你这个是innodb表,可见可能是ibdata1文件丢失或者损坏。 如果你是独立表空间还是可以恢复的,如果是共享表空间,则数据无法恢复喽。 查看此参数innodb_file_per_table


SHOW GLOBAL VARIABLES; 查看这个参数

#8


应该是innodb引擎,我安装数据库的时候默选的就是innodb,后来没有改过。建表的时候也没有添加额外的参数。其它表都是正常的,只有product这张表的数据多一些,访问不了,春节前还是好的,回来就不行了。product这张表大概1600条记录左右。innodb_file_per_table这个参数的值是off状态,那应该就不是独立表空间了,像这种情况,这个表的数据还有救吗?
引用 6 楼 xtdhqdhq 的回复:
你确认你这张表是innodb 引擎的吗?如果是,那么其它innodb 引擎的表呢,还正常吗?

#9


show table status from product_manager;执行这条命令看不到损坏了的那张表,这是什么情况?
引用 8 楼 xyang81 的回复:
应该是innodb引擎,我安装数据库的时候默选的就是innodb,后来没有改过。建表的时候也没有添加额外的参数。其它表都是正常的,只有product这张表的数据多一些,访问不了,春节前还是好的,回来就不行了。product这张表大概1600条记录左右。innodb_file_per_table这个参数的值是off状态,那应该就不是独立表空间了,像这种情况,这个表的数据还有救吗?
Quote: 引用 6 楼 xtdhqdhq 的回复:

你确认你这张表是innodb 引擎的吗?如果是,那么其它innodb 引擎的表呢,还正常吗?

#10


你的问题最后解决了么?

#11


我好像遇到过一次类似的问题。当时是发现这个表的一个外键约束出问题了,后来在information_schema中把那个表的外键都查出来搞了一下就好了,不过感觉这个处理的有些太野路子了。。。

#12


mysql--1146--报错
先找到数据库存放地址,即Data文件夹(复制留下来)
再用电脑管家把所有的mysql卸载
然后把mysql文件夹弄走(卸载不会清掉它,需手动,一般在C:\ProgramData下)(可删除,或剪切走,以防万一)
重新安装mysql(我用的是mysql-installer-community-5.7.13.0程序包)
如果数据库启动了先关闭它(因为版本,关闭是(net stop mysql57--在cmd中);启动是(net start mysql57--在cmd中))
然后把以前的数据库文件(自己需要的)(在Data文件夹下的,数据库名即文件夹名)复制到,新的数据库Data文件夹下(那些自带的数据库别动),
把新的Data下的那五个配置文件替换为以前老的文件(就是这五个文件auto.cnf,ib_buffer_pool,ib_logfile0,ib_logfile1,ibdata1)
重新启动数据库即可

#1


你这个是innodb表,可见可能是ibdata1文件丢失或者损坏。 如果你是独立表空间还是可以恢复的,如果是共享表空间,则数据无法恢复喽。 查看此参数innodb_file_per_table

#2


show create table product;

看一下,如果是innodb 引擎,则说明是一楼中描述的问题,ibdata1文件故障了。

如果是myisam 则,想办法去找一下product.idx

#3


我的数据库版本是5.5.34,在mysql的配置文件中找不到innodb_file_per_table参数配置,请问是看这个参数来得知表空间是独立的还是共享的吗?另外,在mysql的dataidr目录中有ibdata1文件
引用 1 楼 xtdhqdhq 的回复:
你这个是innodb表,可见可能是ibdata1文件丢失或者损坏。 如果你是独立表空间还是可以恢复的,如果是共享表空间,则数据无法恢复喽。 查看此参数innodb_file_per_table

#4


执行show create table product;命令也是提示ERROR 1146 (42S02): Table 'product_manager.product' doesn't exist这个错误,请问这是ibdata1文件故障还是myisam问题?谢谢!
引用 2 楼 ACMAIN_CHM 的回复:
show create table product;

看一下,如果是innodb 引擎,则说明是一楼中描述的问题,ibdata1文件故障了。

如果是myisam 则,想办法去找一下product.idx

#5


引用 3 楼 xyang81 的回复:
我的数据库版本是5.5.34,在mysql的配置文件中找不到innodb_file_per_table参数配置,请问是看这个参数来得知表空间是独立的还是共享的吗?另外,在mysql的dataidr目录中有ibdata1文件
Quote: 引用 1 楼 xtdhqdhq 的回复:

你这个是innodb表,可见可能是ibdata1文件丢失或者损坏。 如果你是独立表空间还是可以恢复的,如果是共享表空间,则数据无法恢复喽。 查看此参数innodb_file_per_table


SHOW GLOBAL VARIABLES; 查看这个参数

#6


你确认你这张表是innodb 引擎的吗?如果是,那么其它innodb 引擎的表呢,还正常吗?

#7


执行SHOW GLOBAL VARIABLES; 命令显示innodb_file_per_table的value是OFF状态
引用 5 楼 xtdhqdhq 的回复:
Quote: 引用 3 楼 xyang81 的回复:

我的数据库版本是5.5.34,在mysql的配置文件中找不到innodb_file_per_table参数配置,请问是看这个参数来得知表空间是独立的还是共享的吗?另外,在mysql的dataidr目录中有ibdata1文件
Quote: 引用 1 楼 xtdhqdhq 的回复:

你这个是innodb表,可见可能是ibdata1文件丢失或者损坏。 如果你是独立表空间还是可以恢复的,如果是共享表空间,则数据无法恢复喽。 查看此参数innodb_file_per_table


SHOW GLOBAL VARIABLES; 查看这个参数

#8


应该是innodb引擎,我安装数据库的时候默选的就是innodb,后来没有改过。建表的时候也没有添加额外的参数。其它表都是正常的,只有product这张表的数据多一些,访问不了,春节前还是好的,回来就不行了。product这张表大概1600条记录左右。innodb_file_per_table这个参数的值是off状态,那应该就不是独立表空间了,像这种情况,这个表的数据还有救吗?
引用 6 楼 xtdhqdhq 的回复:
你确认你这张表是innodb 引擎的吗?如果是,那么其它innodb 引擎的表呢,还正常吗?

#9


show table status from product_manager;执行这条命令看不到损坏了的那张表,这是什么情况?
引用 8 楼 xyang81 的回复:
应该是innodb引擎,我安装数据库的时候默选的就是innodb,后来没有改过。建表的时候也没有添加额外的参数。其它表都是正常的,只有product这张表的数据多一些,访问不了,春节前还是好的,回来就不行了。product这张表大概1600条记录左右。innodb_file_per_table这个参数的值是off状态,那应该就不是独立表空间了,像这种情况,这个表的数据还有救吗?
Quote: 引用 6 楼 xtdhqdhq 的回复:

你确认你这张表是innodb 引擎的吗?如果是,那么其它innodb 引擎的表呢,还正常吗?

#10


你的问题最后解决了么?

#11


我好像遇到过一次类似的问题。当时是发现这个表的一个外键约束出问题了,后来在information_schema中把那个表的外键都查出来搞了一下就好了,不过感觉这个处理的有些太野路子了。。。

#12


mysql--1146--报错
先找到数据库存放地址,即Data文件夹(复制留下来)
再用电脑管家把所有的mysql卸载
然后把mysql文件夹弄走(卸载不会清掉它,需手动,一般在C:\ProgramData下)(可删除,或剪切走,以防万一)
重新安装mysql(我用的是mysql-installer-community-5.7.13.0程序包)
如果数据库启动了先关闭它(因为版本,关闭是(net stop mysql57--在cmd中);启动是(net start mysql57--在cmd中))
然后把以前的数据库文件(自己需要的)(在Data文件夹下的,数据库名即文件夹名)复制到,新的数据库Data文件夹下(那些自带的数据库别动),
把新的Data下的那五个配置文件替换为以前老的文件(就是这五个文件auto.cnf,ib_buffer_pool,ib_logfile0,ib_logfile1,ibdata1)
重新启动数据库即可