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 и у вас что-то работает не так, как должно, или вы хотите оптимизировать северную (программную) часть, обращайтесь к нам в техническую поддержку, мы всегда рады помочь.