Используется 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".