Задать вопрос
@izuru_hitachi

Как исправить ошибки в БД Битрикса?

Обновили тут тестовый битрикс, и при проверке БД возникла ошибка в трёх таблицах:
В таблице b_crm_kanban_supervisor поле ENTITY_TYPE_ID "`ENTITY_TYPE_ID` tinyint unsigned NOT NULL" не соответствует описанию на диске "`ENTITY_TYPE_ID` tinyint NOT NULL"
В таблице b_crm_cleaning поле ENTITY_ID "`ENTITY_ID` int NOT NULL" не соответствует описанию на диске "`ENTITY_ID` int unsigned NOT NULL"
В таблице b_crm_act_sms_placeholder поле ENTITY_TYPE_ID "`ENTITY_TYPE_ID` smallint NOT NULL" не соответствует описанию на диске "`ENTITY_TYPE_ID` int unsigned NOT NULL"

У нас SQL-сервер установлен на одной машине с самим битриксом, подключается через unix-сокет.
В SQL я очень слаб, через командную строку точно не смогу исправить ошибки.
Помогите пожалуйста, командой для исправления!
  • Вопрос задан
  • 422 просмотра
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
ALTER TABLE Statement

Например, для первого сообщения это будет, вероятно,

ALTER TABLE bitrix_db_name.b_crm_kanban_supervisor 
  MODIFY COLUMN `ENTITY_TYPE_ID` tinyint unsigned NOT NULL;

На время выполнения остановите и выгрузите все сервисы Битрикса. И не забудьте заменить имя БД на правильное.

Однако предварительно следует убедиться, что такая модификация возможна без ошибок. Ошибка в этом конкретном случае может возникнуть, если изначально поле содержит отрицательные значения. То есть следует запустить проверяющий запрос

SELECT COUNT(*)
FROM bitrix_db_name.b_crm_kanban_supervisor
WHERE ENTITY_TYPE_ID < 0;

и убедиться, что результат его выполнения - ноль. Если же полученное значение - ненулевое, то следует сильно разбираться, как так получилось.

PS. В теории при обновлении должна запускаться процедура, которая конвертирует данные из старой структуры в новую. Проверьте, что такая существует, и что вы точно её запускали.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы