Может кому пригодится. (думаю что это правильно)
При проверке Полное тестирование системы получил ошибку базы которую нельзя исправить автоматически в комментарии получил следующее:
В таблице b_sale_viewed_product поле PRICE "`PRICE` decimal(18,2) NULL DEFAULT '0.00'" не соответствует описанию на диске "`PRICE` decimal(26,8) NOT NULL DEFAULT '0.00000000'"
Это классическая ситуация, когда фактическая структура таблицы в базе данных перестала соответствовать той, которую ожидает ядро продукта после обновления.
Правильное решение — привести структуру поля PRICE к требуемому виду с помощью SQL-запроса.
Пожалуйста, выполните эти шаги именно в таком порядке, чтобы всё прошло гладко.
Шаг 1: Подготовка данных (Очень важно!)
Прямое изменение типа колонки на NOT NULL завершится ошибкой, если в ней уже есть NULL-значения. Поэтому сначала нужно их убрать.
Выполните этот SQL-запрос в phpMyAdmin или в административном разделе «База данных» вашего Битрикса:
-- Обновляем все NULL-значения на значение по умолчанию 0.00000000
UPD ATE b_sale_viewed_product SE T PRICE = '0.00000000' WHERE PRICE IS NULL;
После выполнения проверьте, что NULL-значений больше нет:
-- Эта команда должна вернуть 0
SEL ECT COUNT(*) FR OM b_sale_viewed_product WHERE PRICE IS NULL;
Шаг 2: Изменение структуры колонки
Теперь, когда данные подготовлены, можно безопасно менять структуру таблицы. Этот запрос изменит тип колонки на decimal(26,8), сделает её обязательной (NOT NULL) и установит значение по умолчанию.
-- Меняем структуру колонки PRICE
ALT ER TABLE b_sale_viewed_product
MODIFY COLUMN PRICE decimal(26,8) NOT NULL DEFAULT '0.00000000';
Шаг 3: Финальная проверка
При проверке Полное тестирование системы получил ошибку базы которую нельзя исправить автоматически в комментарии получил следующее:
В таблице b_sale_viewed_product поле PRICE "`PRICE` decimal(18,2) NULL DEFAULT '0.00'" не соответствует описанию на диске "`PRICE` decimal(26,8) NOT NULL DEFAULT '0.00000000'"
Это классическая ситуация, когда фактическая структура таблицы в базе данных перестала соответствовать той, которую ожидает ядро продукта после обновления.
Правильное решение — привести структуру поля PRICE к требуемому виду с помощью SQL-запроса.
Пожалуйста, выполните эти шаги именно в таком порядке, чтобы всё прошло гладко.
Шаг 1: Подготовка данных (Очень важно!)
Прямое изменение типа колонки на NOT NULL завершится ошибкой, если в ней уже есть NULL-значения. Поэтому сначала нужно их убрать.
Выполните этот SQL-запрос в phpMyAdmin или в административном разделе «База данных» вашего Битрикса:
-- Обновляем все NULL-значения на значение по умолчанию 0.00000000
UPD ATE b_sale_viewed_product SE T PRICE = '0.00000000' WHERE PRICE IS NULL;
После выполнения проверьте, что NULL-значений больше нет:
-- Эта команда должна вернуть 0
SEL ECT COUNT(*) FR OM b_sale_viewed_product WHERE PRICE IS NULL;
Шаг 2: Изменение структуры колонки
Теперь, когда данные подготовлены, можно безопасно менять структуру таблицы. Этот запрос изменит тип колонки на decimal(26,8), сделает её обязательной (NOT NULL) и установит значение по умолчанию.
-- Меняем структуру колонки PRICE
ALT ER TABLE b_sale_viewed_product
MODIFY COLUMN PRICE decimal(26,8) NOT NULL DEFAULT '0.00000000';
Шаг 3: Финальная проверка
Рекомендую перезапустить проверку сайта в административной панели Битрикс (Настройки > Инструменты > Проверка сайта), чтобы убедиться, что ошибка исчезла