Discuz! 出现 Database Error (1036):“Table ‘common_syscache’ is read only”,如何解决?
在使用 Discuz! 论坛系统时,如果遇到如下错误提示:
Discuz! Database Error (1036): Table 'common_syscache' is read only表示数据库中的
common_syscache
表被设置为只读状态,导致 Discuz! 无法写入缓存数据。该问题常见于虚拟主机环境,通常是由于数据库配额超限或文件权限异常引起。
一、常见原因分析
原因 | 描述 | 解决方法 |
---|---|---|
数据库磁盘配额超标 | 虚拟主机数据库有容量限制,超出后自动锁定为只读 | 登录控制面板查看数据库使用情况,清理日志或升级套餐 |
文件系统权限异常 | 数据库文件或目录权限被修改为只读 | 联系主机提供商修复权限 |
MyISAM引擎损坏 | 若使用 MyISAM 引擎,表可能因崩溃变为只读 | 尝试修复表或转换为 InnoDB 引擎(适用于独立服务器) |
数据库服务异常 | MySQL 或 MariaDB 意外重启或配置异常 | 重启MySQL服务或联系服务商检查 |
二、排查与解决步骤
- 登录虚拟主机控制面板
- 进入“数据库管理”页面。
- 查看当前数据库的使用空间是否已超过限制。
- 检查数据库是否被标记为只读
- 如果支持在线管理数据库(如 phpMyAdmin):
- 打开
common_syscache
表; - 点击“操作” → 查看是否显示“只读”标志;
- 可尝试点击“修复表”或“更改表类型为 InnoDB”。
- 打开
- 如果支持在线管理数据库(如 phpMyAdmin):
- 清理 Discuz! 缓存
- 登录 FTP 或文件管理器;
- 删除以下目录内容:
data/cache/ data/template/ data/log/
- 登录后台 → 工具 → 更新缓存。
- 提交工单申请重置数据库状态
- 如果确认数据库已超限或无法修改权限,建议及时联系主机商:
- 请求扩容数据库配额;
- 要求解除只读状态并修复表权限。
- 如果确认数据库已超限或无法修改权限,建议及时联系主机商:
- 避免频繁写入缓存
- 在
config/config_global.php
中适当调整缓存机制:php$_config['memory']['enable'] = 1; // 开启内存缓存减少数据库写入
- 在
三、预防建议
- 定期清理 Discuz! 日志和缓存数据,防止数据库膨胀。
- 使用支持自动扩容的云数据库或升级至更高配虚拟主机。
- 避免频繁执行全站更新或大量插件调用,优化程序性能。
- 对于独立服务器用户,建议统一使用 InnoDB 存储引擎,增强稳定性。
总结
Discuz! 报错 “Table ‘common_syscache’ is read only” 多数是由于虚拟主机数据库空间超限导致的只读保护。建议按照以下顺序处理:- 检查数据库使用情况是否超标;
- 清理缓存释放空间;
- 尝试修复表或更换引擎;
- 提交工单请求技术支持协助处理。
更新时间:2025-05-15 13:14:39
上一篇:Discuz! 出现 Database Error (1045) notconnect,该如何排查与修复?
下一篇:出现 “Access denied for user” 和 “Can’t Connect to MySQL Server” 数据库连接错误,该如何排查?