mysql - phpBB3 SQL 数据库表不存在错误;无法从备份导入或删除损坏的数据库

标签 mysql database macos phpmyadmin phpbb3

我将 phpBB3 安装到 Mac OS X 服务器 (10.9),从四月到几个小时前它一直运行良好。我无法说出问题的确切原因,但似乎在安装 OS X Server 10.9.4 更新后,数据库以某种方式失去了完整性。所以我将解释发生了什么以及我尝试了什么。

当我尝试访问论坛时收到以下错误消息。

General Error 
SQL ERROR [ mysql4 ]
Table 'phpbb3.phpbb_config' doesn't exist [1146]
An sql error occurred while fetching this page. Please contact an administrator if this problem persists.

然后我转到 phpMyAdmin 并单击数据库 phpbb3。它说表丢失了。我不知道如何解决它。所以我使用 TimeMachine 来恢复系统在 OS X Server 更新之前的状态。论坛没问题,但我又盲目地尝试了操作系统更新,结果重复了这个问题。我再次使用了 TimeMachine。这次论坛还没恢复。与此同时,TimeMachine 备份刚刚变满,我意识到我丢失了所有 TimeMachine 备份,只剩下最新的一个。这样,我就再也无法恢复 phpBB3 论坛了。

我放弃了使用 TimeMachine 备份进行恢复,并尝试通过 phpMyAdmin 导入上次备份来恢复数据库。备份是 2 个月前做的,但总比没有好。但是,导入也不起作用。

Error
SQL query:

CREATE TABLE IF NOT EXISTS `phpbb_acl_groups` (
  `group_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `forum_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `auth_option_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `auth_role_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `auth_setting` tinyint(2) NOT NULL DEFAULT '0',
  KEY `group_id` (`group_id`),
  KEY `auth_opt_id` (`auth_option_id`),
  KEY `auth_role_id` (`auth_role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
MySQL said: Documentation

#1813 - Tablespace for table '`phpbb3`.`phpbb_acl_groups`' exists. Please DISCARD the tablespace before IMPORT.

然后我尝试删除数据库 phpbb3 但我失败了。

Error 
SQL query: 
DROP DATABASE `phpbb3` MySQL said: Documentation

#1010 - Error dropping database (can't rmdir './phpbb3', errno: 66)

最后,我找到了实际的数据库文件所在的位置 (/usr/local/mysql/data/phpbb3)。我查看了文件夹,里面还有一堆文件;它们都以 .ibd 扩展名结尾,包括 phpbb_acl_groups.ibd(147 KB;这是按字母顺序排列的第一个)。

这是我的问题:我应该怎么做?我是否应该手动删除 /usr/local/mysql/data/phpbb3 文件夹并尝试导入最新的(2 个月前)数据库导出文件?或者我能以某种方式从 /usr/local/mysql/data/phpbb3 文件夹中恢复数据库吗?

最佳答案

我找到了这篇文章。

mysqldump problems with restore error: 'Please DISCARD the tablespace before IMPORT'

它表示文件夹 /usr/local/mysql/data/phpbb3 应该包含 .ibd 文件和 .frm 文件。但是错误 Tablespace for table 'phpbb3.phpbb_acl_groups' exists. 意味着 .frm 文件都不见了。确实如此。

所以我判断文件夹/usr/local/mysql/data/phpbb3已经没有用了。现在所有的TimeMachine备份都没有了,唯一的办法就是依赖可用的数据库备份文件。我被迫从 finder 中删除该文件夹。通过 phpMyAdmin 创建新的空数据库,然后导入数据库备份。这次没有错误,我能够登录到 phpBB3 论坛。虽然我丢失了新数据,但论坛本身似乎还不错。

关于mysql - phpBB3 SQL 数据库表不存在错误;无法从备份导入或删除损坏的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24838366/

相关文章:

java - 在 java swing 中构建后,我的数据库会出现在 jar 文件中吗?

PHP SERVER_TIMEZONE_OFFSET 解释

mysql - 我找不到这个mysql查询的错误

database - MongoDB 中电子商务网站的数据建模

macos - mac 上的 python 3 的 openCV 3 有问题吗

macos - Mac Os Lion 上的 ruby​​gems 出现 "No such file or directory - getcwd"错误

macos - 以独立于平台的方式从 IP 地址中查找 MacAddress

php - 连接mysql数据库的php问题

python - 使用python循环将数据插入sql表

database - perl中对数据库的递归调用