Ejabberd名单odbc

时间:2012-09-16 05:22:54

标签: configuration odbc ejabberd

我是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_odbc替换mod_roster并提供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,{[],[]}}}

1 个答案:

答案 0 :(得分:1)

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