我的 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 事件)?