我正在使用ejabberd 15.09和mysql 14.14,我正在更改ejabberd.yml以连接mysql,为此:
- 旧配置:
auth_method:internal
mod_last mod_offline mod_roster mod_vcard mod_privacy mod_private mod_pubsub
%% open:odbc_pool_size:20 %% open:odbc_keepalive_interval:30
- 新配置:
auth_method:odbc
odbc_type:mysql odbc_server:" localhost" odbc_database:" ejabberd" odbc_username:" root" odbc_password:" xxx"
mod_last_odbc mod_offline_odbc mod_roster_odbc mod_vcard_odbc mod_privacy_odbc mod_private_odbc mod_pubsub_odbc
odbc_pool_size:20 odbc_keepalive_interval:30
然后我使用mysql创建数据库" ejabberd": MySQL的>创建数据库ejabberd;
重启服务器时,会产生以下错误: 2015-10-30 16:28:52.399 [错误]< 0.3145.0> @ejabberd_odbc:log:666 p1_mysql_conn:无法更改为数据库" ejabberd" :"#42000未知数据库' ejabberd'" 2015-10-30 16:28:52.399 [错误]< 0.386.0> @ejabberd_odbc:日志:666 p1_mysql_conn:post_start错误failed_changing_database 2015-10-30 16:28:52.399 [info]< 0.386.0> @ejabberd_odbc:连接:270 mysql连接失败: **原因:failed_changing_database
如何解决问题?
答案 0 :(得分:0)
首先需要使用MySQL支持编译ejabberd:
./configure --enable-odbc --enable-mysql
如果要连接mysql,则需要使用提供的脚本
创建表mysql < /path/to/mysql.sql
评论您的internal
身份验证方法(auth_method)并添加ODBC
身份验证方法。
# auth_method: internal ## Commented this line
auth_method: ODBC ## Added this line
现在你需要连接到MySQL
odbc_type: mysql
odbc_server: "localhost"
odbc_port: 3306 # the default
odbc_database: "mydb"
odbc_username: "user1"
odbc_password: "userpassword"
odbc_pool_size: 5
您可以阅读选项here的说明。
将_odbc
添加到您希望使用mysql数据库的模块
mod_offline_odbc instead of mod_offline
如果您看到3rd comment的错误,请从该模块中删除_odbc
。
现在重启服务器。