我使用root在sequel pro中创建了一个GameCenter类型数据库,但由于某些原因,我连接到数据库并尝试访问表时会出现以下错误:
检索
信息时发生错误 表'成就'。请再试一次。MySQL说:表' gamecenter2.achievement'
不存在
我环顾四周,大多数人都说这是将数据库从一个地方复制到另一个地方时出现的问题但是我没有这样做。
在使用MySQL的终端中,数据库和表都显示出来但是在尝试访问表的内容时出现了同样的错误:
SHOW COLUMNS FROM Achievement;
ERROR 1146 (42S02): Table 'gamecenter2.achievement' doesn't exist
任何帮助都会非常感激,因为运行CREATE TABLES和INSERT一遍又一遍变得非常烦人!
答案 0 :(得分:3)
我最近遇到了同样的问题(并且在续集专业版中也有相同的错误信息),并且发现它是因为某些类型的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)。