Bitrix: Ошибка MySQL "Can't create table 'b_xml_tree' (errno: -1)"

В нашу службу поддержки часто поступают заявки на смену конфигурации VPS на более производительную. В процессе ее обработки мы заметили следующую ситуацию.

После переноса сайта на новую конфигурацию начинает встречаться ошибка: «Сan't create table 'b_xml_tree' (errno: -1)». Это происходит в приложении 1С при выгрузке товаров на сайт (CMS bitrix).

Сразу заметим, что раньше настройкой сервера клиента занимался или его администратор, или сам клиент. Этого, к сожалению, точно определить не удалось.

Если попытаться выполнить запрос напрямую, в MySQL (через консоль) или через phpmyadmin, то вы получите ту же ошибку. Но если изменить имя таблицы, то она сразу же создастся.

Полностью она выглядит так:

MySQL Query Error: create table b_xml_tree (

ID int(11) not null auto_increment,

 PARENT_ID int(11),

 LEFT_MARGIN int(11),

 RIGHT_MARGIN int(11),

 DEPTH_LEVEL int(11),

 NAME varchar(255),

 VALUE longtext,

 ATTRIBUTES text, PRIMARY KEY (ID)

 );

 [Can't create table 'hoster.b_xml_tree' (errno: -1)]

Причина данной ошибки кроется в неправильной работе с базой данных или в повреждениях при переносе. Зачастую понять, что с базой что-то не так, можно только после ее переноса на другой сервер, когда что-то перестает работать.

Большая часть таблиц Bitrix хранится в InnoDB. Для них, как и для MyISAM, создается отдельный именной файл с расширением .frm (описание таблицы). Однако таблицы, хранящиеся в InnoDB, могут сохраняться в собственный файл .ibd в том же каталоге, где хранятся файлы .frm. И это как раз наш случай.

В /var/lib/mysql/имя_базы_данных_клиента/ находился файл b_xml_tree.ibd, после удаления которого выгрузка из приложения стала проходить корректно, а таблица успешно создалась.

Если ваш сайт работает на Bitrix и у вас что-то работает не так, как должно, или вы хотите оптимизировать северную (программную) часть, обращайтесь к нам в техническую поддержку, мы всегда рады помочь.