Рейтинг:1

Как восстановить компоновщик переопределения макетов из старого снимка БД?

флаг ru

После обновления Drupal с версии 9.1.7 до версии 9.2.0 на многих узлах пользовательский макет компоновщика переопределял макеты по умолчанию, что приводило к массовой потере данных. Что еще хуже, это произошло только вживую, а не на сцене, и было замечено только через несколько дней. Я не знаю, что вызвало проблему, клиент очень расстроен, и мне нужно быстро и выборочно восстановить макеты переопределения из моментального снимка БД за ночь до обновления (и оставить остальные данные нетронутыми).

Пока я знаю две вещи:

  • Все пораженные узлы имеют node.changed отметка времени, соответствующая времени развертывания обновления.
  • На всех затронутых узлах node__layout_builder_layout был обрезан до одного раздела (такой же, как макет по умолчанию, без переопределения)
  • На всех затронутых узлах теряется только последняя версия без создания нового идентификатора версии.
  • Макеты переопределения обычно состоят из настраиваемых, не подлежащих повторному использованию block_content блоки. Кажется, что все блоки все еще существуют в БД.

Я хотел бы знать:

  1. Как я могу проверить, имеет ли узел переопределенный макет или использует макет по умолчанию построителя макета (если возможно, с помощью простого SQL-запроса, без PHP)
  2. Что еще мне нужно восстановить, кроме node__layout_builder_layout таблица (при условии, что пользовательские блоки содержимого, используемые макетами переопределения, все еще существуют), чтобы восстановить макет переопределения узла
  3. Могу ли я безопасно использовать SQL где а <> б или SQL где а = б с а и б являющийся содержимым BLOB-объекта node__layout_builder_layout.layout_builder__layout_section ?
Рейтинг:0
флаг ru

Отвечая на мой вопрос 2:

(ЕСЛИ указанные блоки пользовательского контента и т. д. все еще существуют в БД...)
Восстановление node__layout_builder__layout table восстанавливает макеты переопределения, другие таблицы не требуются.

Рейтинг:0
флаг cn

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.