在Drupal 8迁移中调试忽略项的方法是什么

Igo*_*nko 7 migration drupal-8

我使用migrate_upgrade模块创建了迁移脚本,但是在迁移时我有很多被忽略的项目,我试图从迁移工具中使用drush mmsg,但是对于忽略的字段只有失败才有帮助.

She*_*ang 6

我不确定是否有一种"更合适"的方式来调查各个迁移作业的情况,但我只是查看我的migrate_*数据库表.它没有告诉我特定行失败的原因,但至少我能够确切地确定我需要调查哪些行.

在与您感兴趣的迁移作业匹配的migrate_*表中,查找destid1值为NULL的行.


小智 5

一旦你确定了行,如上所述,有时候仍然很难找到.我的情况是它触发了先前导入的实体的更新,然后抛出了一个行跳过异常.

您可以通过观察while($source->valid())循环来计算抛出异常的内容MigrateExecutable::import().这是在第198行(目前).它有一个try-catch,可以捕获异常,告诉它跳过这一行.

如果您有调试器为您跳过的ID设置监视,然后从异常中获取行和文件触发它.

如果你不这样做,那么值得一个,但是你可以if根据它添加一个sourceIdValues并打印出来$e->getLine() $e->getFile()以获得抛出异常的位置.

  • 就我而言,它是一个错误的 static_map 插件。您所说的 while 循环现在位于 MigrateExecutable.php 的第 198 行附近。使用一些带有 $e->getLine 和 $e->getFile 的 \Drupal::logger 调用帮我找出发生了什么。非常感谢! (2认同)

小智 5

您正在从 Drupal 7 迁移到 Drupal 8,并且在运行迁移后忽略了项目。这就引出了一个非常重要的问题,哪些被忽略了?

你看到什么了

[notice] Processed 632 items (630 created, 0 updated, 0 failed, 2 ignored) - done with 'node_form'
Run Code Online (Sandbox Code Playgroud)

以上是我将在我的示例中使用的内容。

你想知道什么

哪些项目被忽略了!?为此,我们可以查看数据库。我假设您可以访问控制台...

migrate_map_migration_name数据库中的表格将为您提供所需的信息。将有一个名为source_row_status. 值 2 等于忽略状态。因此,运行以下 MySQL 命令:

[notice] Processed 632 items (630 created, 0 updated, 0 failed, 2 ignored) - done with 'node_form'
Run Code Online (Sandbox Code Playgroud)

sourceid1返回的行,列将包含被忽略的项目的ID。

示例输出:

+-------------------------------------------------------+-----------+---------+-------------------+-------------------+---------------+------+
| source_ids_hash                                       | sourceid1 | destid1 | source_row_status | source_row_status | last_imported | hash |
+-------------------------------------------------------+-----------+---------+-------------------+-------------------+---------------+------+
| 8530eb5d63ad4cfea47134a28e3339e089f639164d218287c3... | 10931     | NULL    | 2                 | 0                 | 0             |      |
+-------------------------------------------------------+-----------+---------+-------------------+-------------------+---------------+------+
| ddd550e747c2a26a2a5058d49be0e146616fd5c45f6bef88f3... | 11656     | NULL    | 2                 | 0                 | 0             |      |
+-------------------------------------------------------+-----------+---------+-------------------+-------------------+---------------+------+
Run Code Online (Sandbox Code Playgroud)