Рейтинг:0

Как я могу предотвратить перезапись существующих узлов при миграции вместо использования NID источника (D7)

флаг ng

Я импортировал свои типы контента из D7 в D9, используя /upgrade для полной миграции, и все данные в порядке. Затем у меня есть отдельная миграция для импорта и преобразования моих полей даты, и это тоже работает, за исключением того, что он перезаписывает все существующие узлы вместо того, чтобы использовать их выходящий NID или снова извлекать его из источника. Любые идеи, как предотвратить это?

идентификатор: event_node
label: Узлы событий
миграционная_группа: пользовательская
источник:
  плагин: d7_node
  цель: событие
пункт назначения:
  плагин: сущность: узел
  пакет: событие
процесс:
  нид: нид
  тип:
    плагин: default_value
    default_value: событие
  поле_событие_дата:
    -
      плагин: sub_process
      источник: field_event_date
      процесс:
        стоимость:
          -
            плагин: формат_дата
            from_format: 'Г-м-д H:i:s'
            to_format: 'Г-м-д\TH:i:s'
            источник: значение

        конечное_значение:
          -
            плагин: формат_дата
            from_format: 'Г-м-д H:i:s'
            to_format: 'Г-м-д\TH:i:s'
            источник: значение2
        часовой пояс:
          -
            плагин: default_value
            default_value: 'Америка/Нью-Йорк'
        правило:
          -
            плагин: получить
            источник: рул
miststudent2011 avatar
флаг fr
Кажется, вы делаете что-то не так. Ping меня на Drupal slack постарается вам помочь
miststudent2011 avatar
флаг fr
Удалите все остальные поля, кроме полей nid и date. Он будет сопоставлять данные только с этими двумя полями, оставляя другие поля нетронутыми.
quantumized avatar
флаг ng
Когда я удалил другие поля, в частности, «тип», подал импортированные прогоны, но поля даты не обновляются.
miststudent2011 avatar
флаг fr
В источнике измените целевой ключ на node_type. Это решит вашу проблему
miststudent2011 avatar
флаг fr
Не забудьте повторно импортировать конфиг
miststudent2011 avatar
флаг fr
Проверьте этот файл для справки https://drupal.slack.com/files/UBUGWVA3G/F02J5A3PZV3/d7_node_article_part_one.yml
quantumized avatar
флаг ng
Спасибо за подсказку, но целевой ключ уже установлен на имя машины типа узла ("событие"). И плагин d7:node - по вашему совету мне нечего менять.
miststudent2011 avatar
флаг fr
Нет-нет, я имел в виду полное удаление целевого ключа и добавление нового ключа node_type: event и повторите попытку.
quantumized avatar
флаг ng
Спасибо. Я действительно понял это после публикации. Итак, единственное, что есть в разделе «Источник», это «node_type: event», но теперь я получаю сообщение об ошибке: «Плагин не существует». - Я посмотрел на ваш пример, чтобы сравнить, но не вижу проблемы. Я обновлю свой текущий YML в исходном сообщении.
miststudent2011 avatar
флаг fr
Сделайте одну вещь: удалите все из вашего yml и скопируйте мой yml в свой yml и соответственно измените имена. И сохраните nid и добавьте поле даты и попробуйте импортировать. Это будет работать
miststudent2011 avatar
флаг fr
плагин: необходим d7_node, не удаляйте его
quantumized avatar
флаг ng
Угг, я попробовал твой шаблон, но я думаю, что это слишком другой сценарий. Я вернулся к своей базовой конфигурации и заметил, что id указывает nid при запуске migrate-import, что он правильно обновляет узел, но если я запускаю его без него, он просто обрабатывает все узлы событий, а затем сбрасывает их nid, начиная с nid 1. Это работает для одного указанного NID: drush migrate-import event_node --update --idlist=5318

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

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