ejabberd - 为什么 mysql 表“muc_room”存储不持久空间?
问题描述
我的 ejabberd 服务器使用 mysql DB 作为外部存储,我使用ejabberd API 的/create_room_with_opts方法创建带有选项的房间:{name: "persistent", value: "false"}。一切正常的文件和创建的房间看起来实际上是临时的——当最后一个参与者离开时,它们会自动关闭。
但我有一个问题 - 创建的非持久性房间保存在表muc_room中,尽管它必须只包含持久性房间(https://docs.ejabberd.im/developer/sql-schema/#table-muc-room)
例如,我可以在muc_room表中使用以下选项的空间:
[{allow_change_subj,true},
{allow_private_messages,true},
{allow_private_messages_from_visitors,anyone},
{allow_query_users,true},
{allow_subscription,false},
{allow_user_invites,false},
{allow_visitor_nickchange,true},
{allow_visitor_status,true},
{anonymous,true},
{captcha_protected,false},
{lang,<<>>},
{logging,false},
{mam,true},
{max_users,200},
{members_by_default,true},
{members_only,false},
{moderated,true},
{password,<<>>},
{password_protected,false},
======> {persistent,false},
{presence_broadcast,[moderator,participant,visitor]},
{public,true},
{public_list,true},
{title,<<>>}]
主要问题是我在重新启动我的 ejabberd 服务器时收到了重新创建的所有非持久性房间。
问题:1)为什么不使用 ejabberd API 创建的持久化房间存储在muc_room表中(可能是一些错误)?2)如何避免在重新启动 ejabberd 服务器时重新创建这些房间(除了从数据库中删除它:手动或使用 mysql 事件)?
解决方案
为什么不使用 ejabberd API 创建的持久房间存储在 muc_room 表中
这是在此提交中有意添加的: https ://github.com/processone/ejabberd/commit/05c2995c7a4c2afb8481826f9dbe9ed9ec0b282b
解决这个问题: https ://github.com/processone/ejabberd/issues/1954
显然,现在这不是必需的,所以我在最近的提交中删除了它: https ://github.com/processone/ejabberd/commit/5574b21dd67ba898ea1ba55fb4556b6cd53c58cd
推荐阅读
- git - 如何让我的本地 git 在 Github 中反映大师?
- javascript - 如何使用 Javascript 从输入字段中获取值?
- python - 如何在 AWS lambda 上导入 opencv 模块
- entity-framework - 查看实体框架核心数据库中的数据
- python - Python在循环内到达变量
- python - Python 返回最常见的元素
- jquery - Linq MVC 中的 DateDiff 等效项
- android - Android:尽管代码不再存在,但仍神秘地创建了来自过去实现的数据库
- javascript - HTML 未从 JavaScript 脚本更改
- javascript - CSS样式我的页面,对不起,我是菜鸟