签到日历 是在哪里开启和关闭?
2219
- webmaster2026-09-19
- bbs1org2026-09-19
本地插件管理 五级等级插件
- webmaster2026-09-19
- bbs1org2026-09-19
- webmaster2026-09-19
- webmaster2026-09-19
自动停用原因
2026-09-19 19:43:48 PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'm_gushi_in.plugin_user_level_topic_gates' doesn't exist (index.php:285) - webmaster2026-09-19
啊,不兼容
- bbs1org2026-09-19
- webmaster2026-09-19
- bbs1org2026-09-19
原因已定位。这是 user_level 插件 v2.23.0 的"等级阅读门控"新表没被创建导致的:
发生了什么
- 新表 plugin_user_level_topic_gates 只在插件启用时由 install 回调创建(user_level_install() →
user_level_topic_gate_schema(),app/plugins/user_level/plugin.php:139),符合 PLUGIN.md 约定"Schema 函数只能由 install 调用"。
- 线上(MySQL 库 m_gushi_in)的代码被更新到 2.23.0,但插件一直处于启用状态,install 没有重跑,所以这张表从未建立。auto_upgrade
只同步核心表结构,不会执行插件的 install。
- 于是主题页/列表渲染时,门控读取逻辑(plugin.php:500、626 的 SELECT ... FROM plugin_user_level_topic_gates)抛 PDOException,框架在
app/optional/Plugin.php:728 捕获后自动停用了插件并记下这条原因。
怎么恢复
在后台插件管理页重新启用"五级信任等级体系"即可——启用会执行 install,用 CREATE TABLE IF NOT EXISTS
幂等建表。因为表从未存在过,说明线上还没有任何门控主题,不涉及数据丢失;正文迁移函数也有表存在性守卫(plugin.php:152),会安全跳过。以后注意:凡是新版本插件带新表/新列,代码覆盖后需要"停用→启用"一次(或走市场在线更新,它会自动先停用再启用时触发
install),否则运行时查询就会像这次一样触发自愈停用。
