我的知识记录

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服务或联系服务商检查

二、排查与解决步骤

  1. 登录虚拟主机控制面板
    • 进入“数据库管理”页面。
    • 查看当前数据库的使用空间是否已超过限制
  2. 检查数据库是否被标记为只读
    • 如果支持在线管理数据库(如 phpMyAdmin):
      • 打开 common_syscache 表;
      • 点击“操作” → 查看是否显示“只读”标志;
      • 可尝试点击“修复表”或“更改表类型为 InnoDB”。
  3. 清理 Discuz! 缓存
    • 登录 FTP 或文件管理器;
    • 删除以下目录内容:
      
       
       
      data/cache/ data/template/ data/log/
    • 登录后台 → 工具 → 更新缓存。
  4. 提交工单申请重置数据库状态
    • 如果确认数据库已超限或无法修改权限,建议及时联系主机商:
      • 请求扩容数据库配额
      • 要求解除只读状态并修复表权限
  5. 避免频繁写入缓存
    • 在 config/config_global.php 中适当调整缓存机制:
      
       
      php
      $_config['memory']['enable'] = 1; // 开启内存缓存减少数据库写入

三、预防建议

  • 定期清理 Discuz! 日志和缓存数据,防止数据库膨胀。
  • 使用支持自动扩容的云数据库或升级至更高配虚拟主机。
  • 避免频繁执行全站更新或大量插件调用,优化程序性能。
  • 对于独立服务器用户,建议统一使用 InnoDB 存储引擎,增强稳定性。

总结

Discuz! 报错 “Table ‘common_syscache’ is read only” 多数是由于虚拟主机数据库空间超限导致的只读保护。建议按照以下顺序处理:
  1. 检查数据库使用情况是否超标;
  2. 清理缓存释放空间;
  3. 尝试修复表或更换引擎;
  4. 提交工单请求技术支持协助处理。
及时处理可有效恢复 Discuz! 正常运行,保障论坛稳定访问。
 

Discuz! 出现 Database Error (1036):“Table ‘common_syscache’ is read only”,如何解决?

标签:Discuz数据库错误-Table is read only-数据库表只读-虚拟主机数据库限制-common_syscache

更新时间:2025-05-15 13:14:39

上一篇:Discuz! 出现 Database Error (1045) notconnect,该如何排查与修复?

下一篇:出现 “Access denied for user” 和 “Can’t Connect to MySQL Server” 数据库连接错误,该如何排查?