среда, 25 июня 2025 г.

Ошибка обновления Bitrix модуль main версии 21.1200.600

Ошибка проявляется при обновлении с php7.4 на php8. Текст ошибки может быть как Query Error так и MySQL server has gone away, так и ошибка запроса

delete o1 FROM b_user_access_check o1, b_user_access_check o2 WHERE o1.id > o2.id AND o1.USER_ID = o2.USER_ID

Причина - большое кол-во дубликатов в таблице b_user_access_check, а запрос (выше) не корректно чистит их.
Для решения испольуем запрос очистки дубликатов через временную таблицу

CREATE TEMPORARY TABLE `t_temp` as ( SELECT DISTINCT `USER_ID`, `PROVIDER_ID` FROM `b_user_access_check` GROUP BY `USER_ID`, `PROVIDER_ID` ); TRUNCATE TABLE `b_user_access_check`; INSERT INTO `b_user_access_check` (`USER_ID`, `PROVIDER_ID`) SELECT `USER_ID`, `PROVIDER_ID` FROM `t_temp`;

Комментариев нет: