如何使用单独的脚本连接到ejabberd的Mnesia数据库?

时间:2012-02-10 18:00:25

标签: erlang ejabberd mnesia

我正在尝试从单独的脚本中将关联数据插入到ejabberd的Mnesia数据库中。我是一个Erlang初学者,虽然我可以弄清楚如何创建和使用单独的Mnesia数据库,但我无法弄清楚如何连接到ejabberd。使用相同的“-mnesia目录”似乎不够。

2 个答案:

答案 0 :(得分:5)

这个问题减少了如何在Erlang中进行rpc调用的问题。

  1. 确保ejabberd与节点的主机部分的完全限定主机名或IP地址一起运行。这在我的安装中指定为/etc/ejabberd/ejabberdctl.cfg中的EJABBERD_NODE。如果您必须在此步骤中更改主机名,请参阅https://git.process-one.net/ejabberd/mainline/blobs/raw/v2.1.10/doc/guide.html#htoc79(“更改计算机主机名”)。

  2. 使用-name或-sname启动shell或脚本,并使用与上述限制相同的主机。

  3. 您已准备好使用Erlang的内置RPC。例如:

  4. (来自你的shell或脚本)

    Cookie = 'YOUR_EJABBERD_COOKIE'. % mine was found in /var/lib/ejabberd/.erlang.cookie
    EjabberdNode = 'ejabberd@127.0.0.1'. % or whatever you set as EJABBERD_NODE
    erlang:set_cookie(EjabberdNode, Cookie).
    net_adm:ping(EjabberdNode).
    rpc:call(EjabberdNode, mnesia, system_info, [tables]).
    

答案 1 :(得分:2)

只需使用命令 ejabberdctl debug

mnesia:info(). %to overview mnesia 
mnesia:schema(schema). %see table named schema`s detail