При обновлении старых версий битрикса можно столкнуться с ошибкой
Некоторые обновления не были установлены
Ошибка в updater’e 18.5.500 модуля main: [1786] Statement violates GTID consistency: CREATE TABLE … SELECT.. Установка обновлений модуля main прервана. [CL04] Ошибка обновления модулей.
Проблема возникает, если вы используете репликацию MySQL на базе GTID. Конструкция СREATE TABLE … SELECT запрещена, т.к. существует неоднозначность при записи этой транзакции в binlog в зависимости от настроек мастера и слейва.
Проблемный запрос:
CREATE TABLE b_option_site ( MODULE_ID VARCHAR(50) not null, NAME VARCHAR(50) not null, SITE_ID CHAR(2) not null, VALUE TEXT, PRIMARY KEY(MODULE_ID, NAME, SITE_ID), INDEX ix_option_site_module_site(MODULE_ID, SITE_ID) ) SELECT MODULE_ID, NAME, SITE_ID, VALUE FROM b_option WHERE SITE_ID IS NOT NULL
Необходимо разбить его 2 отдельных — для создания и вставки данных:
CREATE TABLE b_option_site ( MODULE_ID VARCHAR(50) not null, NAME VARCHAR(50) not null, SITE_ID CHAR(2) not null, VALUE TEXT, PRIMARY KEY(MODULE_ID, NAME, SITE_ID), INDEX ix_option_site_module_site(MODULE_ID, SITE_ID) ); INSERT INTO b_option_site SELECT MODULE_ID, NAME, SITE_ID, VALUE FROM b_option WHERE SITE_ID IS NOT NULL;
Updater битрикса содержит в себе проверку на существование таблицы, поэтому после ручного создания обновление продолжится.
Подобная ошибка встречается только в версии 18.5.500 модуля main.
Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!
Подписаться в telegram