哥斯拉 发表于 2020-12-12 20:24:58

这种数据库错误

Discuz! Database Error
(1146) Table 's7072573.common_syscache' doesn't exist
SELECT * FROM common_syscache WHERE `cname` IN('userapp','portalcategory','diytemplatenameportal','setting','style_default','cronnextrun')
PHP Debug

No.      File      Line      Code
1      portal.php      18      discuz_application->init()
2      source/class/discuz/discuz_application.php      66      discuz_application->_init_setting()
3      source/class/discuz/discuz_application.php      686      loadcache(Array)
4      source/function/function_core.php      702      table_common_syscache->fetch_all(Array)
5      source/class/table/table_common_syscache.php      63      discuz_database::query(%s)
6      source/class/discuz/discuz_database.php      136      db_driver_mysql->query(%s, false, false)
7      source/class/db/db_driver_mysql.php      153      db_driver_mysql->halt(%s, %d, %s)
8      source/class/db/db_driver_mysql.php      224      break()

Crystαl 发表于 2020-12-12 20:25:06

安装不完整或其他误操作导致数据表common_syscache不存在,请补齐缺失的数据表

Discuz智能体 发表于 2025-3-13 15:51:39

该错误表明数据库缺少 **common_syscache** 表,此表用于存储Discuz核心缓存数据(如系统配置、模板缓存等)。以下是专业解决方案:

---

### **问题原因**
1. **表未创建**:常见于未正确执行Discuz安装/升级流程,或数据库迁移时表缺失
2. **表前缀不匹配**:`config_global.php` 中配置的表前缀与数据库实际前缀不一致
3. **插件异常操作**:某些插件在安装/卸载时误删系统表

---

### **解决方案**
#### 1. 手动创建缺失表(推荐)
通过数据库管理工具(如phpMyAdmin)执行以下SQL(注意替换表前缀 `pre_` 为实际前缀):
CREATE TABLE `pre_common_syscache` (
`cname` varchar(32) NOT NULL DEFAULT '',
`ctype` tinyint(3) unsigned NOT NULL DEFAULT 0,
`dateline` int(10) unsigned NOT NULL DEFAULT 0,
`data` mediumblob NOT NULL,
PRIMARY KEY (`cname`),
KEY `ctype` (`ctype`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
*注:若表前缀非默认,需修改 `pre_` 为实际前缀(参考 `config/config_global.php` 中的 `$_config['db']['1']['tablepre']`)*

---

#### 2. 校验数据库完整性
通过DZ插件网提供的 **[数据库校验工具](https://www.dz-x.net/tools/database-check)**(需登录后下载),扫描并修复缺失表。

---

#### 3. 修复表前缀一致性
检查配置文件 `config/config_global.php` 中表前缀配置:
$_config['db']['1']['tablepre'] = 'pre_'; //需与数据库实际前缀一致

---

### **技术原理**
`common_syscache` 存储的缓存类型包括:
- `setting`(系统核心配置)
- `style_default`(默认风格数据)
- `cronnextrun`(计划任务时间戳)
- `diytemplatenameportal`(门户DIY模板映射)

当该表缺失时,Discuz初始化阶段无法加载基础配置数据,导致HTTP 500错误。

---

### **延伸建议**
1. 若频繁出现表缺失,建议检查MySQL账号是否具有`CREATE`权限
2. 使用DZ插件网的 **[系统医生插件](https://www.dz-x.net/plugins/system-doctor)** 可自动修复此类问题
3. 数据库操作前务必通过插件或phpMyAdmin进行完整备份

如需进一步排查,可提供以下信息:
1. Discuz版本号(X3.4/X3.5等)
2. 最近是否进行过版本升级或插件安装
3. 数据库错误日志片段(非PHP debug)
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 这种数据库错误