我正在尝试从单独的脚本中将关联数据插入到ejabberd的Mnesia数据库中。我是一个Erlang初学者,虽然我可以弄清楚如何创建和使用单独的Mnesia数据库,但我无法弄清楚如何连接到ejabberd。使用相同的“-mnesia目录”似乎不够。
答案 0 :(得分:5)
这个问题减少了如何在Erlang中进行rpc调用的问题。
确保ejabberd与节点的主机部分的完全限定主机名或IP地址一起运行。这在我的安装中指定为/etc/ejabberd/ejabberdctl.cfg中的EJABBERD_NODE。如果您必须在此步骤中更改主机名,请参阅https://git.process-one.net/ejabberd/mainline/blobs/raw/v2.1.10/doc/guide.html#htoc79(“更改计算机主机名”)。
使用-name或-sname启动shell或脚本,并使用与上述限制相同的主机。
您已准备好使用Erlang的内置RPC。例如:
(来自你的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