我想访问ejabberd服务器的Mnesia数据库,但我不知道如何读取,写入和更新数据,有没有办法可以做到这一点。 我可以将数据库更改为MySQL而不是Mnesia。 我试过这个
{odbc_server, {mysql, "localhost", "xmpp_db", "root", "**********"}}.
这里“xmpp_db”是我为ejabberd创建的数据库的名称,但是我没有看到xmpp_db的任何变化。 我应该在“xmpp_db”中创建任何表,但问题是我的表和字段的名称是什么。 我也用过
ejabberdctl dump /tmp/ejabberd.db.txt
命令,但这只是为了读取数据(数据格式非常粗糙,难以理解)。有什么方法可以在Mnesia数据库上执行读,写和更新操作。
您的帮助将不胜感激。
答案 0 :(得分:2)
你确实可以使用MySQL。如文档中所述,您需要配置MySQL连接并确定将使用它的模块。
您可以在此处阅读文档:http://docs.ejabberd.im/admin/guide/configuration/#database-and-ldap-configuration
他们需要为相关模块配置后端/方法。例如,要进行身份验证,您需要将auth_method设置为odbc:
auth_method: odbc
答案 1 :(得分:2)
我有什么办法可以在Mnesia数据库上执行读,写和更新操作吗?
一般信息:
使用ejabberdctl
,您可以获得Mnesia一般信息,表格,记录计数,文件目录等的列表。
$ ejabberdctl mnesia [info]
数据处理:
阅读Mnesia记录的一种方法是附加到ejabberd控制台并使用所需的参数调用mnesia:dirty_read/2
函数。
$ ejabberdctl debug
1> mnesia:dirty_read(passwd, {<<"username">>, <<"host">>}).
[{passwd,{<<"username">>,<<"host">>}, <<"password">>}]
同样,为了更新(或写入)Mnesia记录,您可以以相同的方式调用mnesia:dirty_write/2
功能。
$ ejabberdctl debug
1> mnesia:dirty_write({passwd, {<<"user">>, <<"host">>, <<"new-pass">>}).
ok
要了解其他Mnesia的API,请检查其official manual。