1

我在 sequel pro 中使用 root 创建了一个 GameCenter 类型的数据库,但由于某种原因,在连接到数据库并尝试访问表时,我时不时会遇到以下错误:

检索
表“成就”的信息时出错。请再试一次。

MySQL说:表'gamecenter2.achievement'
不存在

我环顾四周,大多数人说这是将数据库从一个地方复制到另一个地方时出现的问题,但我没有这样做。

在使用 MySQL 的终端中,数据库和表都显示出来,但是在尝试访问表的内容时出现相同的错误:

SHOW COLUMNS FROM Achievement;
ERROR 1146 (42S02): Table 'gamecenter2.achievement' doesn't exist

对此的任何帮助将不胜感激,因为一遍又一遍地运行 CREATE TABLES 和 INSERT 变得非常烦人!

4

1 回答 1

3

我最近遇到了同样的问题(在 sequel pro 中也有同样的错误消息),后来发现这是因为某些类型的 MySQL 数据库(即使用 InnoDB 的数据库)将单个表的实际数据存储在名为“ibdata1”的文件中”(您可以在此处阅读更多信息:https ://dba.stackexchange.com/questions/15531/why-does-innodb-store-all-databases-in-one-file )。因此,如果您使用时间机器为您的数据库恢复单个文件夹,您实际上只是在恢复空的数据库架构,而里面没有好东西。如果您还没有恢复该“ibdata1”文件以及相应的“ib_logfile”文件,它将无法找到数据。解决方案是确保您还恢复了这些文件(或最近的良好副本)。

还要确保在恢复任何内容之前停止 mysql 服务,即从命令行“mysql.server stop”(或“launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist”,如果你已经安装了 mysql 使用自制)。

于 2014-10-07T14:32:45.570 回答