Get Social

Ошибка “определения сущности поля” при обновлении Drupal 9

На странице “Отчёт о состоянии” сайта на движке Drupal решил навести порядок, убрать ошибки. Вот одна из них:

Детали статуса

Обнаружены ошибки

Определения сущности/поля
Несоответствие определений сущности и/или поля

В типе сущности и определениях поля обнаружены следующие изменения.

Paragraph
Поле paragraph.field_dvantages_content должно быть обновлено.
Поле paragraph.field_news_carousel должно быть обновлено.
Поле paragraph.field_views_block_content должно быть обновлено.

Не сразу понятно, как устранить эту ошибку, поэтому пришлось опять пользоваться поиском в интернет. Выяснил, что в Drupal есть модуль, который помогает в решении этой задачи. Он называется “Entity Update” и его использование связано с определённым риском. Поэтому не забываем сделать бэкап базы данных.

Итак, установил модуль “Entity Update”:

composer require drupal/entity_update
drush en entity_update -y

попытался выполнить команду

drush upe paragraph

и получил кучу ошибок при выполнении запроса к бд:

SELECT 1 AS expression
FROM paragraph_revision__field_dvantages_content
WHERE (field_dvantages_content_target_id IS NOT NULL)
OR (field_dvantages_content_display_id IS NOT NULL)
OR (field_dvantages_content_argument IS NOT NULL)
OR (field_dvantages_content_title IS NOT NULL)
OR (field_dvantages_content_data IS NOT NULL)
LIMIT 1 OFFSET 0;

Анализ запроса и таблицы paragraph_revision__field_dvantages_content показал, что ошибку вызывают 2 колонки: field_dvantages_content_argument и
field_dvantages_content_title, которых нет в базе.

Создал эти 2 пустые колонки:

ALTER TABLE `your_drupal_db`.paragraph_revision__field_views_block_content ADD field_views_block_content_argument varchar(255) CHARACTER SET ascii COLLATE ascii_general_ci DEFAULT NULL NULL COMMENT 'argument';

ALTER TABLE `your_drupal_db`.paragraph_revision__field_views_block_content ADD field_views_block_content_title varchar(255) CHARACTER SET ascii COLLATE ascii_general_ci DEFAULT NULL NULL COMMENT 'argument';

Потом снова выполняем:

drush upe paragraph

И выясняем, что аналогичная ситуация в с aragraph_revision__field_news_carousel. Поэтому тоже добавляем 2 колонки с _argument и _title. Такие же манипуляции проделываем и с paragraph_revision__field_views_block_content.

После всех этих запросов ошибка “определения сущности поля” исчезает.

Drupal 9 – composer update вызывает ошибку drush php Cannot redeclare

Ставил последние обновления ядра и модулей Drupal 9 с версии 9.3 до 9.5. При этом был получается баг – composer игнорирует настройки json и ставит в папку drupal core в папку vendor, а не туда куда надо. В результате сайт перестает нормально работать и при попытке зайти на любую страницу вызывает редирект в /core/install.php.

В логах получается что-то вроде:

PHP Fatal error:  Cannot redeclare config_get_config_directory() (previously declared in /home/***/public_html/****/core/includes/bootstrap.inc

Что помогло: удаление папки vendor и composer.lock и исправление “composer/installers”: false на true в composer.json

“config”: {
        “sort-packages”: true,
         “allow-plugins”: {
             “composer/installers”: true,
             “cweagans/composer-patches”: true,
             “drupal/core-composer-scaffold”: true,
             “drupal/core-project-message”: true

После чего переустановил всё командой:

composer install