使用带有ejabberd的mysql驱动程序而无需重新编译

时间:2012-05-31 10:29:39

标签: mysql erlang ejabberd

我拥有ejabberd所需的所有mysql .beam文件。我通过apt安装了ejabberd。 但是当我尝试将这些.beam文件复制到/usr/lib/ebin目录并运行ejabberd时,它回复到ejabberd.log以下内容:

  

= INFO REPORT ==== 2012-05-31 09:46:02 ===       申请:ejabberd       退出:{bad_return,{{ejabberd_app,start,[normal,[]]},                            { '退出',database_module_missing}}}       类型:临时

我做错了什么?

将mysql驱动程序添加到ejabberd apt安装的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

检查哪个触发器此ERROR是明确的。它检查硬编码的模块列表是否在Erlang VM路径中。确保odbc文件存在并且它们具有适当的文件所有权。所需文件是:

check_database_module(odbc) ->
    check_modules(odbc, [odbc, odbc_app, odbc_sup, ejabberd_odbc, ejabberd_odbc_sup, odbc_queries]);
check_database_module(mysql) ->
    check_modules(mysql, [mysql, mysql_auth, mysql_conn, mysql_recv]);
check_database_module(pgsql) ->
    check_modules(pgsql, [pgsql, pgsql_proto, pgsql_tcp, pgsql_util]).

答案 1 :(得分:2)

ejabberd are located in a different place使用的BEAM文件 - 尝试将文件放在那里。

作为旁注:你确定那些BEAM文件真的没问题吗? Erlang在二进制可移植性方面不太宽容,所以总是建议使用与在目标机器上运行ejabberd相同的Erlang版本重新编译必要的代码。