0

我是 ejabberd 的新手,我对 mod_roster_odbc 有疑问。我按照此处的说明进行操作: http : //www.planeterlang.org/en/planet/article/How_to_install_ejabberd_2.0.0_with_PostgreSQL_support/ 在 ejabberd.cfg 中,我将 mod_roster 替换为 mod_roster_odbc 并提供 pgsql 信息(信息正确)我下载pgsql 的 ejabberd 架构:(我修复了一些查询错误,缺少一些逗号。) https://github.com/processone/ejabberd/tree/master/src/odbc

但是 odbc 名册不起作用。当我使用 ejabberdctl 创建用户时,它说:用户 newuser@domain 已经在节点 ejabberd@localhost 注册。在 pgsql 数据库中,没有任何变化,没有插入数据。

所以,我的最后一个问题是:我有一个数据库存储名册用户,名册组,......我如何使用 mod_roster_odbc。

非常感谢更新 1:当我尝试订阅(使用 XMPP 客户端将用户添加到名册)时,我可以看到日志:

=ERROR REPORT==== 2012-09-16 12:29:21 ===
E(<0.308.0>:ejabberd_odbc:405) : SQL transaction restarts exceeded
** Restarts: 10
** Last abort reason: []
** Stacktrace: [{ejabberd_odbc,sql_query_t,1},
                {mod_roster_odbc,'-process_subscription/6-fun-0-',8},
                {ejabberd_odbc,outer_transaction,3},
                {ejabberd_odbc,run_sql_cmd,4},
                {p1_fsm,handle_msg,10},
                {proc_lib,init_p_do_apply,3}]
** When State == {state,<0.309.0>,pgsql,30000,"mossi",1000,{0,{[],[]}}}
4

1 回答 1

1

由于Postgres版本,我终于找到了问题。我将 Postgres 从 9.0 更改为 8.4 并且有效。这个问题是因为 Postgres 9.0 不使用“\”处理多行查询。

于 2012-09-17T02:23:07.793 回答