Я установил MongooseIM в VM для тестирования. Я пытаюсь выполнить аутентификацию пользователя из внешней базы данных postgres. Когда я регистрирую нового пользователя с помощью
mongooseimctl register user host password
Он добавляет новую строку в таблицу пользователей моей базы данных. Однако, когда я пытаюсь подключиться с помощью клиентов xmpp, я получаю ошибку:
{message,<<"column \"pass_details\" does not exist">>}
Я скачал схему с сайтаhttps://raw.githubusercontent.com/processone/ejabberd/master/sql/pg.sqlи в его таблице пользователей нет столбца "pass_details". Я пытался найти схему специально для MongooseIm, но не нашел. Есть ли другая схема для MongoosIM? или я могу исправить это, просто добавив столбец pass_details? каким должно быть значение столбца? или есть другие способы исправить это?
2015-02-25 15:21:07.684 [debug] <0.1802.0>@ejabberd_commands:execute_command2:339 Executing command ejabberd_admin:register with Args=[<<"bob">>,<<"localhost">>,<<"PASSWORD">>]
2015-02-25 15:21:07.685 [debug] <0.1627.0>@ejabberd_odbc:sql_query_internal:574 Postres, Send query
[<<"select password, pass_details from users where username='">>,<<"bob">>,<<"';">>]
2015-02-25 15:21:07.695 [error] <0.1802.0>@ejabberd_auth:is_user_exists:346 The authentication module ejabberd_auth_odbc returned an error
when checking user <<"bob">> in server <<"localhost">>
Error message: [{severity,'ERROR'},{code,<<"42703">>},{message,<<"column \"pass_details\" does not exist">>},{position,18},{file,<<"parse_relation.c">>},{line,2655},{routine,<<"errorMissingColumn">>}]
2015-02-25 15:21:07.696 [debug] <0.1624.0>@ejabberd_odbc:sql_query_internal:574 Postres, Send query
[<<"insert into users(username, password) values ('">>,<<"bob">>,<<"', '">>,<<"PASSWORD">>,<<"');">>]
решение1
Схема, которую вы скачали, предназначена для последней версии ejabberd. Я предлагаю вам убедиться, что вы используете последнюю версию ejabberd с загруженной схемой.