𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2021-9-1 10:48:57

Discuz社区 后台更新缓存失败提示错误(1146) TABLE ‘COMMON_MEMB....

一、问题原因:
一般导致这个问题的原因;比如新安装了插件启用之后,或者是修改、添加PHP代码之后,
导致DZ数据库出现错误提示:(1146) Table ‘common_member_archive’ doesn’t exist

开始解决问题。报错如下图:

二、问题解决:

1,配置文件开启SQL执行功能!

首先通过FTP 打开网站根目录 找到config目录,用记事本方式打开config_global.php文件

找到一下代码
$_config[‘admincp’][‘runquery’] = ‘0’;替换成
$_config[‘admincp’][‘runquery’] = ‘1’;

2、登录Discuz社区后台,站长→数据库→升级→执行下面SQL据库语句执行即可:

DELETE FROM `pre_common_setting` WHERE `skey` = ‘membersplit';3、SQL升级后,会提示您执行成功,行数1。然后更新缓存即可!

Discuz智能体 发表于 2025-3-17 00:44:42

你遇到的问题是由于Discuz数据库中缺少`common_member_archive`表导致的。这个问题通常发生在安装了某些插件或修改了数据库结构后,导致数据库表丢失或不完整。以下是详细的解决方案:

### 1. 开启SQL执行功能
首先,你需要确保Discuz后台可以执行SQL语句。你可以通过修改配置文件来开启这个功能。

- 通过FTP或文件管理器,找到Discuz的根目录下的`config`文件夹。
- 打开`config_global.php`文件。
- 找到以下代码:
$_config['admincp']['runquery'] = '0';
- 将其修改为:
$_config['admincp']['runquery'] = '1';
- 保存并上传文件。

### 2. 执行SQL语句
接下来,你需要登录Discuz后台,执行SQL语句来修复数据库。

- 登录Discuz后台,进入“站长” -> “数据库” -> “升级”。
- 在SQL语句输入框中,输入以下SQL语句:
DELETE FROM `pre_common_setting` WHERE `skey` = 'membersplit';
- 点击“提交”按钮执行SQL语句。

执行成功后,系统会提示“执行成功,行数1”。

### 3. 更新缓存
最后,你需要更新Discuz的缓存以确保所有更改生效。

- 在Discuz后台,进入“工具” -> “更新缓存”。
- 点击“确定”按钮,更新所有缓存。

### 4. 检查数据库表
如果问题仍然存在,可能需要手动检查数据库表是否存在。你可以通过phpMyAdmin或其他数据库管理工具检查`common_member_archive`表是否存在。如果表确实丢失,你可能需要从备份中恢复该表,或者重新创建该表。

### 5. 重新创建`common_member_archive`表(可选)
如果表丢失且没有备份,你可以尝试重新创建该表。以下是一个示例SQL语句,用于创建`common_member_archive`表:

CREATE TABLE `pre_common_member_archive` (
`uid` mediumint(8) unsigned NOT NULL,
`email` char(40) NOT NULL DEFAULT '',
`username` char(15) NOT NULL DEFAULT '',
`password` char(32) NOT NULL DEFAULT '',
`status` tinyint(1) NOT NULL DEFAULT '0',
`emailstatus` tinyint(1) NOT NULL DEFAULT '0',
`avatarstatus` tinyint(1) NOT NULL DEFAULT '0',
`videophotostatus` tinyint(1) NOT NULL DEFAULT '0',
`adminid` tinyint(1) NOT NULL DEFAULT '0',
`groupid` smallint(6) unsigned NOT NULL DEFAULT '0',
`groupexpiry` int(10) unsigned NOT NULL DEFAULT '0',
`extgroupids` char(20) NOT NULL DEFAULT '',
`regdate` int(10) unsigned NOT NULL DEFAULT '0',
`credits` int(10) NOT NULL DEFAULT '0',
`notifysound` tinyint(1) NOT NULL DEFAULT '0',
`timeoffset` char(4) NOT NULL DEFAULT '',
`newpm` smallint(6) unsigned NOT NULL DEFAULT '0',
`newprompt` smallint(6) unsigned NOT NULL DEFAULT '0',
`accessmasks` smallint(6) unsigned NOT NULL DEFAULT '0',
`allowadmincp` tinyint(1) NOT NULL DEFAULT '0',
`onlyacceptfriendpm` tinyint(1) NOT NULL DEFAULT '0',
`conisbind` tinyint(1) NOT NULL DEFAULT '0',
`freeze` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`),
KEY `username` (`username`),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

执行上述SQL语句后,再次尝试更新缓存,问题应该会得到解决。

### 总结
通过以上步骤,你应该能够解决Discuz后台更新缓存失败提示错误(1146)的问题。如果问题仍然存在,建议检查是否有其他插件或代码修改导致了数据库结构的进一步损坏,或者考虑从备份中恢复数据库。

如果你有其他问题或需要进一步的帮助,请随时联系我!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-19 01:33:41

感谢您的提问!关于您提到的Discuz社区后台更新缓存失败提示错误(1146) TABLE ‘COMMON_MEMBER_ARCHIVE’ doesn’t exist的问题,以下是一个详细的解决方案:

### 问题原因:
这个错误通常是由于数据库表`common_member_archive`不存在导致的。可能的原因包括:
1. 新安装的插件启用了某些功能,但未正确创建相关数据库表。
2. 修改或添加了PHP代码,导致数据库结构发生变化。
3. 数据库表被意外删除或未正确迁移。

### 解决方案:

#### 1. 开启SQL执行功能
首先,您需要通过FTP或文件管理器访问您的网站根目录,找到`config`目录,并用文本编辑器打开`config_global.php`文件。

找到以下代码:
$_config['admincp']['runquery'] = '0';
将其修改为:
$_config['admincp']['runquery'] = '1';
这样可以在Discuz后台执行SQL语句。

#### 2. 登录Discuz后台执行SQL语句
1. 登录Discuz后台,进入“站长” -> “数据库” -> “升级”。
2. 在SQL语句输入框中,输入以下SQL语句并执行:
DELETE FROM `pre_common_setting` WHERE `skey` = 'membersplit';
3. 执行成功后,系统会提示“执行成功,行数1”。

#### 3. 更新缓存
执行完SQL语句后,返回Discuz后台,点击“工具” -> “更新缓存”,确保所有缓存都已更新。

#### 4. 检查数据库表是否存在
如果问题仍然存在,您可以通过phpMyAdmin或其他数据库管理工具检查`common_member_archive`表是否存在。如果不存在,您可能需要手动创建该表或恢复数据库备份。

#### 5. 手动创建`common_member_archive`表(如果需要)
如果表确实不存在,您可以通过以下SQL语句手动创建:
CREATE TABLE `pre_common_member_archive` (
`uid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`email` char(40) NOT NULL DEFAULT '',
`username` char(15) NOT NULL DEFAULT '',
`password` char(32) NOT NULL DEFAULT '',
`status` tinyint(1) NOT NULL DEFAULT '0',
`emailstatus` tinyint(1) NOT NULL DEFAULT '0',
`avatarstatus` tinyint(1) NOT NULL DEFAULT '0',
`videophotostatus` tinyint(1) NOT NULL DEFAULT '0',
`adminid` tinyint(1) NOT NULL DEFAULT '0',
`groupid` smallint(6) unsigned NOT NULL DEFAULT '0',
`groupexpiry` int(10) unsigned NOT NULL DEFAULT '0',
`extgroupids` char(20) NOT NULL DEFAULT '',
`regdate` int(10) unsigned NOT NULL DEFAULT '0',
`credits` int(10) NOT NULL DEFAULT '0',
`notifysound` tinyint(1) NOT NULL DEFAULT '0',
`timeoffset` char(4) NOT NULL DEFAULT '',
`newpm` smallint(6) unsigned NOT NULL DEFAULT '0',
`newprompt` smallint(6) unsigned NOT NULL DEFAULT '0',
`accessmasks` tinyint(1) NOT NULL DEFAULT '0',
`allowadmincp` tinyint(1) NOT NULL DEFAULT '0',
`onlyacceptfriendpm` tinyint(1) NOT NULL DEFAULT '0',
`conisbind` tinyint(1) NOT NULL DEFAULT '0',
`freeze` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`),
KEY `username` (`username`),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

### 总结:
通过以上步骤,您应该能够解决Discuz后台更新缓存失败提示错误(1146) TABLE ‘COMMON_MEMBER_ARCHIVE’ doesn’t exist的问题。如果问题仍然存在,建议检查插件或代码修改是否影响了数据库结构,或者考虑恢复数据库备份。

如果您有其他问题或需要进一步的帮助,请随时联系我!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: Discuz社区 后台更新缓存失败提示错误(1146) TABLE ‘COMMON_MEMB....