mysql表不存在_MySQL>表不存在。 但它确实(或它应该)

MySQL>表不存在。 但它确实(或它应该)

我确实更改了MySQL安装的datadir,并按照一些步骤运行正常。 我所拥有的每个基地都正确地移动了一个。

我可以连接和使用数据库,甚至SHOW TABLES正确返回所有表,并且mysql数据目录中存在每个表的文件。 但是当我尝试在那里选择某些东西时,它表示该表不存在。 但表确实存在,它甚至在SHOW TABLES声明中显示!

我的猜测是,SHOW TABLES列出了文件以某种方式存在文件损坏或类似的东西,但它没有检查它。 所以我可以列出它们但不能访问它们。

但这只是猜测,我以前从未见过这个。 现在无法重新启动数据库进行测试,使用它的每个其他应用程序运行正常。

有谁知道它是什么?

例:

mysql> SHOW TABLES;

+-----------------------+

| Tables_in_database |

+-----------------------+

| TABLE_ONE |

| TABLE_TWO |

| TABLE_THREE |

+-----------------------+

mysql> SELECT * FROM TABLE_ONE;

ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist

30个解决方案

233 votes

万一有人还在乎:

使用命令直接复制数据库目录后,我遇到了同样的问题

cp -r /path/to/my/database /var/lib/mysql/new_database

如果你使用一个使用ib*表的数据库,你会得到上面提到的这个疯狂的“表不存在”错误。

问题是您需要MySQL数据库的根目录中的ib*文件(例如ibdata1,2242762929398492162和ib_logfile1)。

当我复制那些它为我工作。

Mike Dacre answered 2019-03-03T12:39:41Z

38 votes

对于我在Mac OS(MySQL DMG安装)上,简单重启MySQL服务器解决了这个问题。 我猜测冬眠导致了它。

Martin answered 2019-03-03T12:40:11Z

23 votes

当我正在使用的表名的情况关闭时,我得到了这个问题。 所以table被称为'db',但我在select语句中使用'DB'。 确保案例相同。

dkinzer answered 2019-03-03T12:40:42Z

22 votes

将lower_case_table_names设置为1,然后尝试访问使用该变量的默认值创建的表时,也会发生此错误。 在这种情况下,您可以将其还原为以前的值,您将能够读取该表。

golimar answered 2019-03-03T12:41:12Z

14 votes

停止mysqld

backup mysql文件夹:mysqldump < dbase.mysql

将数据库文件夹从旧机器复制到mysqldump < dbase.mysql

从旧数据库覆盖ib *(ib_logfile *,ibdata

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值