актуально

Битрикс и ошибки с b_xml_tree

Если вы используете на своем сайте обмен между магазином и 1C, то скорее всего натыкались на ошибки связанные с таблицей b_xml_tree . Подробные коды бывают разные, но причины всегда одинаковые.

Таблица b_xml_tree

Сама таблица b_xml_tree в базе данных существует для обеспечения функционала обмена сайта с внешними системами, в 99% случаев это 1С. В оставшемся 1% прочее ПО использующее в своей работе принцип обмена заложенный для связи с 1С. Задействована таблица исключительно в процессе обмена.

В процессе обмена интернет-магазина с учетной системой, можно наткнуться на различные описания ошибки:

MySQL Query Error: create table b_xml_tree_import_1c
или 
Сan't create table 'b_xml_tree' (errno: -1)
или
...

Причина всегда одна - обмен с 1С "наслоился" или "идет по кругу". И для решения проблемы нужно свести число обменов происходящих в одно время до одного!

Что делать?

Как обычно у вас есть два пути - писать в техническую поддержку вендора или разбираться самостоятельно. В случае написания в поддержку в первом (полезном) сообщении вам предложат:

Поставьте прокси-сервер fiddler (http://www.fiddler2.com/fiddler2/) на компьютер с 1C с которого производится выгрузка. Откройте fiddler и включите логирование трафика по https - Tools > Fiddler Options > HTTPS > Decrypt HTTPS traffic option, если ваш сайт работает по протоколу https. После запустите выгрузку. При этом ваши хиты отобразятся в fiddler, сохраните сессию из fiddler в формате saz и приложите её к обращению.

После этого вам (возможно) ответят нужно сделать тоже самое, что написано на пару абзацев выше - проанализировать интенсивность и "наложение" обменов.

Теперь, для тех кто все делает сам, проанализируйте свои обмены и исключите лишние. В каких случаях это бывает и где искать параллельные выгрузки:

Ситуация 1.
Вы используете многосайтовую конфигурацию (несколько сайтов в одной админке битрикса) и осуществляете обмен с разными сайтами в одно время. Таким образом в базе данных происходит крах таблицы из-за наложения обменов. Просто разведите обмены по времени.

Ситуация 2.
В 1С используется регламентная выгрузка только изменений. При смене формата на "полная выгрузка" и последующем возвращении к режиму "только изменения" произошел "трабл" и полная выгрузка продолжает запускается в фоновом режиме. Проверьте узе обмена.

Ситуация 3.
Существует выгрузка по расписанию, которая обновляет остатки и цены в своем графике, но кто-то решил "толкнуть" полную выгрузку (или частичную выгрузку) вручную и потоки наложились вызвав ошибку.

Ситуация 4.
Вы используете несколько 1С и обновляете сайт то с одной то с другой. Это точное повторение ситуации 1 навыворот. Просто разведите обмены по времени.

Ситуация 5.
Характеризуется особенной ошибкой:

MySQL Query Error: select ID, ATTRIBUTES from b_xml_tree where (ID = 1) and  ... 

Возникает при существенных обновлениях самого движка или переезде с сервера на сервер. Причина в неверной кодировка таблицы. Просто запустите проверки сайта или выполните запрос:

alter database [ИМЯ БАЗЫ ДАННЫХ - default = sitemanager] default character set utf8;

P.S Если так произошло, что таблица разрушена (бывает при переносе сайта и мистических обстоятельствах) зачастую достаточно запустить проверку базы данных в админке и исправить ошибки, если инструмент ошибку не диагностирует, то физически удалить файлы таблиц базы данных на сервере:

/var/lib/mysql/[ ИМЯ БАЗЫ ДАННЫХ - default = sitemanager]/b_xml_tree_import_1c.ibd
/var/lib/mysql/[ ИМЯ БАЗЫ ДАННЫХ - default = sitemanager]/b_xml_tree.ibd

Комментарии
Полезность статьи
5 / 5 5 5 1
На основе 1 оценок
100%
0%
0%
0%
0%
Понравилась статья?
Отлично
Комментарий*
Представьтесь
Великое почтение написавшему. Пока не стер на сервере файлики указанные в постскриптуме (правда у меня расширение было другое) никто и никак не мог мне помочь справится с проблемой. Удалил - обмен ожил.

Возврат к списку