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 already registered at node ejabberd@localhost 」と表示されます。pgsql データベースでは、何も変更されず、データが挿入されません。

それで、私の最後の質問は次のとおりです。データベースに名簿users、rostergroupsなどを保存しています... 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 に答える