Erlang 带mysql的Ejabberd花名册

Erlang 带mysql的Ejabberd花名册,erlang,xmpp,ejabberd,Erlang,Xmpp,Ejabberd,我正在使用exauth和ejabberd对我的用户进行身份验证,但我想使用mysql存储用户信息,如组、名册等 这是我的配置 {auth_method, external}. {extauth_program, "/home/hitesh/ejabberd_auth.php"}. {host_config, "subdomain.nodyssey.com", [{auth_method, [external, anonymous]}]}. {odbc_server, {mysql, "loc

我正在使用exauth和ejabberd对我的用户进行身份验证,但我想使用mysql存储用户信息,如组、名册等

这是我的配置

{auth_method, external}.
{extauth_program, "/home/hitesh/ejabberd_auth.php"}.

{host_config, "subdomain.nodyssey.com", [{auth_method, [external, anonymous]}]}.

{odbc_server, {mysql, "localhost","ejabberd", "root", "root"}}.
mysql数据库是空的!用户在群聊中仍然有花名册和聊天历史记录,所以看起来mnesia数据库正在使用中!我如何切换到mysql来实现这一点


我做错了什么?

用户601836是正确的。我最初误解了这个问题。假设odbc和mysql驱动程序已正确安装,下面是更新的答案:

  • 您是否创建了mysql表来存储花名册数据等?您的所有ejabberd表都是使用innodb引擎创建的吗? 您可以在github中获取架构:。您也可以在ejabberd安装文件夹中找到它。我的位置是:ejabberd_installation_root/lib/ejabberd-2.1.11/priv/sql/mysql.sql
  • 使用ejabberd.cfg中的*_odbc替换相关模块名。例如,将mod_花名册替换为mod_花名册,将mod_muc替换为mod_muc_odbc。以下列出了许多odbc支持的模块: ... {mod_offline_odbc, []}, {mod_last_odbc, []}, {mod_roster_odbc, []}, {mod_shared_roster_odbc,[]}, {mod_vcard_odbc, []}, {mod_muc_odbc, [ ...]}, {mod_pubsub_odbc, [ ...]}, ...
    用户601836是正确的。我最初误解了这个问题。假设odbc和mysql驱动程序已正确安装,下面是更新的答案:

  • 您是否创建了mysql表来存储花名册数据等?您的所有ejabberd表都是使用innodb引擎创建的吗? 您可以在github中获取架构:。您也可以在ejabberd安装文件夹中找到它。我的位置是:ejabberd_installation_root/lib/ejabberd-2.1.11/priv/sql/mysql.sql
  • 使用ejabberd.cfg中的*_odbc替换相关模块名。例如,将mod_花名册替换为mod_花名册,将mod_muc替换为mod_muc_odbc。以下列出了许多odbc支持的模块: ... {mod_offline_odbc, []}, {mod_last_odbc, []}, {mod_roster_odbc, []}, {mod_shared_roster_odbc,[]}, {mod_vcard_odbc, []}, {mod_muc_odbc, [ ...]}, {mod_pubsub_odbc, [ ...]}, ...
    这个问题提出已经有一段时间了。同时,Ejabberd配置文件已更改。要启用外部花名册存储,假设配置了ejabberd和mysql DB以及ejabberd模式,那么在ejabberd.yml中只需执行以下操作:

    sql_type: mysql
    sql_server: "localhost"
    sql_database: "some_database_name"
    sql_username: "some_username"
    sql_password: "some_password"
    
    要更改
    mod_花名册:{}


    这个问题提出已经有一段时间了。同时,Ejabberd配置文件已更改。要启用外部花名册存储,假设配置了ejabberd和mysql DB以及ejabberd模式,那么在ejabberd.yml中只需执行以下操作:

    sql_type: mysql
    sql_server: "localhost"
    sql_database: "some_database_name"
    sql_username: "some_username"
    sql_password: "some_password"
    
    要更改
    mod_花名册:{}



    你创建了mysql数据库吗?您以前是否在花名册中使用过mnesia?如果是,您是否迁移了数据?最后一件事,你在ejabberd.cfg mod_花名册_odbc中启用了吗?@user601836我该怎么做?{mod_-odbc,[]}像这样?是的,再加上禁用mod_-odbc…当然你需要mysql连接所需的所有模块OK,mod_-odbc被禁用,mysql连接正在工作,mysql模块被上传并且工作正常。但它仍然使用mynesia数据库!这是我的配置,对不起。我的意思是你必须禁用mod_花名册…不是mod_odbc…mod_花名册启用意味着使用mnesia支持花名册。你创建了mysql数据库吗?您以前是否在花名册中使用过mnesia?如果是,您是否迁移了数据?最后一件事,你在ejabberd.cfg mod_花名册_odbc中启用了吗?@user601836我该怎么做?{mod_-odbc,[]}像这样?是的,再加上禁用mod_-odbc…当然你需要mysql连接所需的所有模块OK,mod_-odbc被禁用,mysql连接正在工作,mysql模块被上传并且工作正常。但它仍然使用mynesia数据库!这是我的配置,对不起。我的意思是你必须禁用mod_花名册…不是mod_odbc…mod_花名册启用意味着使用mnesia支持花名册。AFAIK身份验证方法不会影响Ejabberd中的花名册。你是对的。我误解了这个问题。更新了答案谢谢,这看起来很有希望。此外,您是否认为所有*_odbc模块都已安装?或者我需要重新安装它们吗?另外,当我运行MYSQL脚本时,我的MYSQL服务器不接受这个“SET table_type=InnoDB”;所以我删除了它并安装了SQL命令的其余部分,它能工作吗?如果没有,那么我如何使用innodb安装mysql!对不起,另一个问题是。但如果您能提供帮助,默认情况下,所有*\u odbc都已安装。但是,如果手动安装ejabberd,则必须指定“-enable odbc”选项。最好使用innodb。不知道如果是myisam引擎会发生什么。您可以运行“show create table one_of_ejabberd_table_name;”查看存储引擎是否为innodb。我猜您使用的是MySQL 5.5,它不再有table_类型的变量。查看AFAIK身份验证方法的解决方案不影响Ejabberd中的排班您是对的。我误解了这个问题。更新了答案谢谢,这看起来很有希望。此外,您是否认为所有*_odbc模块都已安装?或者我需要重新安装它们吗?另外,当我运行MYSQL脚本时,我的MYSQL服务器不接受这个“SET table_type=InnoDB”;所以我删除了它并安装了SQL命令的其余部分,它能工作吗?如果没有,那么我如何使用innodb安装mysql!对不起,另一个问题是。但如果您能提供帮助,默认情况下,所有*\u odbc都已安装。但是,如果手动安装ejabberd,则必须指定“-enable odbc”选项。最好使用innodb。不知道如果是myisam引擎会发生什么。您可以运行“show create table one_of_ejabberd_table_name;”查看存储引擎是否为innodb。我猜您使用的是MySQL 5.5,它不再有table_类型的变量。从中查看解决方案