Разное

Что делать если обновление модуля не ставится из-за ошибок

Столкнулся с такой ситуацией. При стандартном обновлении решения модуль не обновляется. Вопрос удалось решить таким образом.

  1. После попытки обновления проблемного модуля появляется папка с названием типа «update_m1768386526» в папке /bitrix/updates/ . В этой папке и находится обновление модуля, а также файл с апдейтом, например такой updater1.2.0.php .
  2. Этот файл нужно отредактировать так, чтобы в нем не было ошибок. А также если используется обновление таблиц модуля в базе данных нужно добавить экземпляр класса CUpdater. Примерно так:

было:

/* InstallDB */
$errors = $updater->QueryBatch('install/db/'. $DBType .'/install.sql');

стало:

$curPath = '/bitrix/updates/update_m1768388358/модуль/';
$dbType = 'mysql';
$updaterP = '/bitrix/updates/update_m1768388358/модуль/updater1.2.1.php';
$curDir = '/bitrix/updates/update_m1768388358/модуль/';
$moduleID = 'модуль';
$callType = 'ALL';
$updater = new CUpdater();
$updater->Init($curPath, $dbType, $updaterP, $curDir, $moduleID, $callType);

/* InstallDB */
$errors = $updater->QueryBatch('install/db/'. $DBType .'/install.sql');
if ($errors === true) 
{
    $errors = [];
}

3. Запустить этот файл через командную строку через интерфейс Битрикс /bitrix/admin/php_command_line.php?lang=ru

require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/classes/general/update_class.php');
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/updates/update_m1768388358/модуль/updater1.2.0.php');

4. Поменять версию модуля в файле /bitrix/modules/модуль/install/version.php

Эти этапы следует повторять до тех пор, пока ошибка не уйдет или не поставятся все обновления.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

один × один =