【问题标题】:how to access ejabberd`s mnesia directly?如何直接访问 ejabberd 的 mnesia?
【发布时间】:2013-07-30 09:22:00
【问题描述】:

ejabberd在ubuntu上运行,版本是2.1.13,只有一个节点,不是分布式的,我想在ejabberdctl debug shell中查询它的mnesia数据库

我尝试在 ejabberdctl debug shell 中使用 tv:start(),但它返回

undefined function tv:start/0

我也试过了

Cookie = 'MY_COOKIE'.
EjabberdNode = 'ejabberd@localhost'.
erlang:set_cookie(EjabberdNode, Cookie).
** exception error: distribution_not_started
   in function  auth:set_cookie/2 (auth.erl, line 119)
net_adm:ping(EjabberdNode).
rpc:call(EjabberdNode, mnesia, system_info, [tables]).

如您所见,我似乎遇到了分发错误。

以及如何使用 mysql shell 之类的 shell 查询 mnesia 中的表?

【问题讨论】:

    标签: ejabberd


    【解决方案1】:

    这里我的第一个节点是 ejabberd@localhost,为了访问第一个节点的 mnesia,我们构建另一个节点 test@localhost 与第一个节点生成一个集群,然后你可以访问mnesia。

    命令:

     erl -sname test -mnesia dir '"/tmp/"' -mnesia extra_db_nodes "['ejabberd@ubuntu']" -s mnesia
    

    注意:-sname 测试,不能和第一个节点名相同,这里是ejabberd 然后通过命令启动 mnesia

    mnesia:start().
    

    然后你可以通过命令检查mnesia

     mnesia:info().
    

    祝你好运~

    【讨论】:

      猜你喜欢
      • 2015-06-13
      • 2023-03-11
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2012-03-03
      • 2011-03-19
      • 2017-01-21
      • 2015-12-17
      相关资源
      最近更新 更多