【问题标题】:Use mysql drivers with ejabberd without recompilation [closed]将mysql驱动程序与ejabberd一起使用而无需重新编译[关闭]
【发布时间】:2012-06-05 14:32:21
【问题描述】:
我拥有 ejabberd 所需的所有 mysql .beam 文件。我通过 apt 安装了 ejabberd。
但是,当我尝试将这些 .beam 文件复制到 /usr/lib/ebin 目录并运行 ejabberd 时,它会向 ejabberd.log 回显以下内容:
=信息报告==== 2012-05-31 09:46:02 ===
应用:ejabberd
退出:{bad_return,{{ejabberd_app,start,[normal,[]]},
{'EXIT',database_module_missing}}}
类型:临时的
我做错了什么?
在ejabberd apt安装中添加mysql驱动的正确方法是什么?
【问题讨论】:
标签:
mysql
erlang
ejabberd
【解决方案1】:
ejabberd are located in a different place 使用的 BEAM 文件 — 尝试将您的文件放在那里。
附带说明:您确定那些 BEAM 文件真的没问题吗? Erlang 在二进制可移植性方面不太宽松,因此始终建议使用与在目标机器上运行 ejabberd 相同的 Erlang 版本重新编译必要的代码。
【解决方案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]).