0

我有 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,[]]}, {'EXIT',database_module_missing}} } 类型:临时

我做错了什么?

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

4

2 回答 2

2

检查哪个触发此错误是直截了当的。它检查硬编码的模块列表是否在 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]).
于 2012-05-31T21:10:04.970 回答
2

ejabberd 使用的 BEAM 文件位于不同的位置— 尝试将文件放在那里。

附带说明:你确定那些 BEAM 文件真的没问题吗?Erlang 在二进制可移植性方面并不太宽松,因此始终建议使用与在目标机器上运行 ejabberd 相同的 Erlang 版本重新编译必要的代码。

于 2012-05-31T23:13:40.677 回答