Используется ejabberd 2.0.3. При переносе данных в РСУБД MSSQL возникли проблемы с VCARD. Информация не сохраняется.
ejabberd.cfg:
{hosts, ["localhost"]}.
{auth_method, odbc}.
{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}.
{modules,
[
{mod_adhoc, []},
{mod_announce, [{access, announce}]},
{mod_caps, []},
{mod_configure,[]},
{mod_disco, []},
{mod_http_bind,[]},
{mod_irc, []},
{mod_last,[]},
{mod_muc, [
{access, muc},
{access_create, muc},
{access_persistent, muc},
{access_admin, muc_admin}
]},
{mod_offline, []},
{mod_privacy, []},
{mod_private, []},
{mod_pubsub, [
{access_createnode, pubsub_createnode},
{plugins, ["default", "pep"]}
]},
{mod_register, [
{welcome_message, {"Welcome!",
"Welcome to this Jabber server."}},
{access, register}
]},
{mod_roster_odbc, []},
{mod_shared_roster,[]},
{mod_time, []},
{mod_vcard_odbc, []},
{mod_version, []}
]}.
XML-консоль показывает вот такой диалог:
<iq type="get" to="user@localhost" id="qip_14"> <vCard xmlns="vcard-temp" prodid="-//HandGen//NONSGML vGen v1.0//EN" version="2.0" /> </iq> <iq from="user@localhost" to="user@localhost/QIP" id="qip_14" type="result" /> <iq type="set" id="qip_16"> <vCard xmlns="vcard-temp"> <FN /> <N> <GIVEN>Name</GIVEN> <MIDDLE /> <FAMILY>Family</FAMILY> </N> ... </vCard> </iq> <iq from="user@localhost" to="user@localhost/QIP" id="qip_16" type="result" /> <iq type="get" to="user@localhost" id="qip_20"> <vCard xmlns="vcard-temp" prodid="-//HandGen//NONSGML vGen v1.0//EN" version="2.0" /> </iq> <iq from="user@localhost" to="user@localhost/QIP" id="qip_20" type="result" />
При трассировке обращений к БД был обнаружен вот такой запрос:
insert into vcard(username, vcard) values ('user', '<vCard xmlns=\'vcard-temp\'><FN/><N><GIVEN>Name</GIVEN><MIDDLE/><FAMILY>Family</FAMILY></N><NICKNAME>user</NICKNAME><BDAY/><ADR><HOME/><STREET/><EXTADR/><EXTADD/><LOCALITY/><REGION/><PCODE/><CTRY/><COUNTRY/></ADR><ADR><WORK/><STREET/><EXTADR/><EXTADD/><LOCALITY/><REGION/><PCODE/><CTRY/><COUNTRY/></ADR><ORG><ORGNAME/><ORGUNIT/></ORG><TITLE/><ROLE/><URL/><DESC/><PHOTO/></vCard>');т.е. одинарные кавычки внутри строковой константы не удваиваются, и запрос сваливается с ошибкой Неправильный синтаксис около "vcard".