为啥 mysql 表“muc_room”存储不持久空间?
Posted
技术标签:
【中文标题】为啥 mysql 表“muc_room”存储不持久空间?【英文标题】:Why mysql table "muc_room" stores not persistent room?为什么 mysql 表“muc_room”存储不持久空间? 【发布时间】:2020-02-06 06:27:21 【问题描述】:我的 ejabberd 服务器使用 mysql DB 作为外部存储a,我使用 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) 为什么不使用存储在 muc_room 表中的 ejabberd API 创建持久化房间(可能是一些错误)? 2) 重启ejabberd服务器时如何避免重新创建这些房间(除了从数据库中删除:手动或使用mysql事件)?
【问题讨论】:
【参考方案1】:为什么不使用 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
【讨论】:
在您尝试此解决方案后,如果它解决了您的问题,请将此答案标记为“好”,以免其他人花时间对此进行调查。以上是关于为啥 mysql 表“muc_room”存储不持久空间?的主要内容,如果未能解决你的问题,请参考以下文章