0

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

我曾尝试在ejabberdctl 调试外壳中使用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 中的表?

4

1 回答 1

3

这里我的第一个节点是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().

祝你好运~

于 2013-07-30T09:40:01.710 回答