【发布时间】:2018-06-13 21:24:07
【问题描述】:
我正在处理 D8 中的迁移脚本,该脚本从 MySQL 数据库中提取,并将填充由该模块创建的 D8 中的表...
https://github.com/bjaxelsen/field_ipaddress 这个模块是这个的一个D8端口... https://www.drupal.org/project/field_ipaddress
无论如何,我安装了模块并将该字段添加到具有无限数量值的帐户中。
一般用户迁移已经完成并且工作正常。它将用户名、电子邮件和状态迁移到 Drupal,这里一切正常。
第二个迁移是将用户 IP 地址列表移动到 D8 中。我的数据集将如下所示...
user_id slstatus status_id ipFrom ipTo modifyDateUnix
50374 1 0 1.1.1.1 1.1.1.1 1505415351
25108 0 1 4.4.4.0 4.4.4.255 1479243329
真实代码运行mysql中的INET_ATON函数返回整数,但上面是为了说明意图。
在准备行函数中,我还获取 IP 地址并将它们转换为 db 表存储所需的十六进制值。
slstatus 与用户的活动状态有关,status_id 与 ip 记录的状态有关。这些用于确定称为已删除的新变量。我还创建了一个名为 idx 的变量,它是一个......以及一个索引。所有这些新字段都会添加回该行。
我的 YAML 看起来像这样,是我开始头疼的地方......
id: UserIpsMigrate
migration_group: 'UMG'
label: 'User IP Migration'
source:
plugin: UserIpsMigrate
process:
'field_ip_address/bundle': 'user'
'field_ip_address/deleted': deleted
'field_ip_address/entity_id':
plugin: migration_lookup
migration: UserMigrate
source: user_id
'field_ip_address/revision_id':
plugin: migration_lookup
migration: UserMigrate
source: user_id
'field_ip_address/langcode': 'en'
'field_ip_address/delta': idx
'field_ip_address/field_ip_address_ip_ipv6': 0
'field_ip_address/field_ip_address_ip_from': ipFrom
'field_ip_address/field_ip_address_ip_to': ipTo
destination:
plugin: entity:user
default_bundle: migration
migration_dependencies:
required:
- user_migrate
我得到的错误表明这个迁移正在尝试创建一个用户......这会因为这些数据而失败,所以我确定我需要使用不同的目标插件,但我不知道...... 1)我应该使用哪个目标插件 2)如果我的 yaml “出轨”
【问题讨论】: