Экспорт и импорт контента Drupal7-Drupal8 вручную

1 декабря 2019 в 11:18
Аватар пользователя kovalevm kovalevm 0 17 Решено

Добрый день!
При попытке выполнить миграцию с Drupal 7 на Drupal 8 не перенеслась огромная часть контента, остальное переносилось почти неделю с постоянным зависанием, ошибками 500.

Есть ли инструкция по переносу контента с помощью модулей экспорта-импорта? Пробовали Views Data Export, Features, не удается разобраться, как именно экспортировать контент.
Подскажите, пожалуйста.

Комментарии

Да, больше недели пытались мигрировать встроенным модулем Migrate, постоянно выдавались ошибки, что не перенеслись материалы из-за того, что не прикреплены к пользователям (не дословно). Видимо, нужно сначала переносить пользователей, как-то указывать это в настройках, не нашел.
Потом больше 5 дней переносил только подписчиков рассылки, хотя выделенный сервер для высоконагруженных cms (проблема описана на drupal.org, решения нет). В итоге постоянные ошибки 500. Поэтому ищу способы миграции контента вручную или другим модулем.

1 декабря 2019 в 18:13

Попытался еще раз запустить миграцию. Вот такие ошибки выдает в больших количествах на разные типы материалов:

Миграция d7_comment не соответствует требованиям. Missing migrations d7_node:blog, d7_node:fairy, d7_node:family (и так далее)
Operation on Comments failed
Миграция d7_node:webform не соответствует требованиям. Missing migrations d7_user. requirements: d7_user.

Содержимое остается пустым. Возможно, если разобраться с этой ошибкой, можно будет мигрировать. Помогите, пожалуйста.

1 декабря 2019 в 22:29

Да, возможно ли сохранить все связи и отношения при экспорте, насколько корректен будет такой вид миграции?
Также возможно удалось бы мигрировать с помощью Migrate, если разобраться в этом

Миграция d7_comment не соответствует требованиям. Missing migrations d7_node:blog, d7_node:fairy, d7_node:family (и так далее)

Пока не нашел на иностранных сайтах о друпале, с чем эта ошибка связана.

2 декабря 2019 в 7:49

Непосредственно для "стандартной" миграции с 7 на 8 модуль Migrate не использовал,
но судя по содержанию ошибок, наверное на сайте друпал7 есть "дополнительные" бандлы(bundle) нод (fairy, family и т.п.) с "дополнительными" полями.
И наверное для этих бандлов где-то в админке migrate необходимо добавить миграции для этих бандлов, с настройкой соответствия полей друпад7->друпал8.
Т.е. какое поле бандла друпад7 соответствует полю соответствующего бандла друпал8.

А вообще, полный функционал модуля Migrate на пару порядков мощнее "стандартных" миграций drupalN > друпал8.

Он может импортировать данные сущностей(материалов) практически из любого формата (сторонняя БД, csv-json-xml файлы и т.п.)
С преобразованием исходных значений-форматов полей в процессе импорта, с учетом всех связей материалов и т.п.

ЗЫ. для добавления кастомных миграций необходимо установить вспомагательные модули migrate_tools и migrate_plus
в коде данных модулей есть примеры миграций, глядя на которые не очень сложно добавить свои.
Так же в интернетах есть куча текстовых и видео руководств по настройке кастомных миграций.
На английском так вообще море.

2 декабря 2019 в 8:31

Спасибо, да, установлены migrate_tools и migrate_plus, но в ходе миграции не появляются дополнительные настройки, кроме стандартных - исходная база данных и путь к файлам сайта.
Их необходимо указывать вручную в файлах модуля? Обновиться пытаюсь без помощи drush.

2 декабря 2019 в 8:48

Кажется, разгадка совсем близко
https://www.drupal.org/project/drupal/issues/2916266

Помогите, пожалуйста, правильно составить функцию для

A non-existent config entity name returned by FieldStorageConfigInterface::getBundles(): entity type: node, bundle: comment_node_ffilm, field name: field_filesize

<?phpfunction my_module_update_8001() {
  ## Fixes:
  ## A non-existent config entity name returned by FieldStorageConfigInterface::getBundles(): entity type: node, bundle: comment_node_ffilm, field name: field_filesize
  $entity_type = 'node';
  $bundle = 'comment_node_ffilm';
  $field_name = 'field_filesize';

  /** @var \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_factory */
  $key_value_factory = \Drupal::service('keyvalue');
  $field_map_kv_store = $key_value_factory->get('entity.definitions.bundle_field_map');
  $map = $field_map_kv_store->get($entity_type);
  // Remove the field_dates field from the bundle field map for the page bundle.
  unset($map[$field_name]['bundles'][$bundle]);
  $field_map_kv_store->set($entity_type, $map);
}?>

4 декабря 2019 в 23:10

Вот здесь нашел возможно нужную инструкцию.
https://www.drupal.org/docs/8/api/migrate-api/executing-migrations
Помогите, пожалуйста, понять, какие бандлы нод необходимо добавить и где это можно сделать в админке?
Есть еще вариант, что тут /admin/structure/migrate, но тоже не разберусь никак.

2 декабря 2019 в 13:21

Есть еще мысль: https://www.drupal.org/project/drupal/issues/3005718
Ошибка возникла из-за комментариев, которые должны переноситься после миграции нод.
Буду очень благодарен, если поможете решить вопрос, как настроить, чтобы первыми переносились пользователи и ноды.

2 декабря 2019 в 19:43

Подскажите, пожалуйтса, статью, где подробно, лучше на русском рассказывают, как добавить нужные бандлы.
К примеру, вот с такой ошибкой:

Missing bundle entity core/lib/Drupal/Core/Entity/EntityType.php:914)
Source ID node,news,field_picture: Missing bundle entity, entity type node_type, entity id comment_node_news. (/core/lib/Drupal/Core/Entity/EntityType.php:914)

И с такой:

Source ID og_membership,og_membership_type_default,default,og_membership_request: Missing bundle entity, entity type og_membership_type, entity id og_membership_type_default. (/core/lib/Drupal/Core/Entity/EntityType.php:914)

3 декабря 2019 в 18:27

Или вот такая ошибка:

A non-existent config entity name returned by FieldStorageConfigInterface::getBundles(): entity type: node, bundle: comment_node_fgame, field name: field_link_download

3 декабря 2019 в 21:12

Похоже, что нет. Как можно указать, чтобы выполнилась их миграция?
Сейчас по окончанию миграции вот такое сообщение:

4 upgrades failed
Процесс обновления не закончен

В логах ошибок:

Operation on Comments failed
Operation on User accounts failed
Operation on Simplenews subscribers failed
Operation on Voting API Votes failed

4 декабря 2019 в 9:39

kovalevm wrote:
Как можно указать, чтобы выполнилась их миграция?

Самый надёжный способ - это создать её и выполнить.

4 декабря 2019 в 9:42

Установлены модули Migrate Tools, Migrate Plus. Помогите, пожалуйста, с инструкцией для создания необходимых настроек миграции.

4 декабря 2019 в 10:08