如何在Drupal 8迁移模块中刷新新的迁移?


10

在编写Drupal 8迁移过程时,如果我重新安装自定义迁移模块,则只能刷新新的迁移过程。Drush cr不起作用。

说明:

我有一个模块,即:cm_migrations,其中有2个迁移:

  • cm_users
  • cm_tags

随着drush ms我看到:

Group: beer     Status  Total  Imported  Unprocessed  Last imported       
 cm_users        Idle    3      3         0            2016-02-09 16:56:25 
 cm_tags         Idle    4      0         4                                

我编写了一个新的迁移过程:

  • cm_beers

我执行了,drush cr; drush ms并且看到了与以前相同的表。

仅当我卸载并安装时,cm_migrations我才能看到三个迁移过程:

Group: beer     Status  Total  Imported  Unprocessed  Last imported       
 cm_users        Idle    3      3         0            2016-02-09 16:56:25 
 cm_tags         Idle    4      0         4                          
 cm_beers        Idle    4      0         4              

关于如何在不重新安装模块的情况下刷新刷新过程的任何线索?

谢谢


另外,我可以说,如果执行迁移过程,删除其中的内容migrate.migration.cm_beers.yml并再次执行该过程,则迁移不会失败。似乎将yaml文件的内容缓存在某处。
IgnacioSánchez16年

Answers:


19

我发现这对我有用

drush config-import --partial --source = modules / custom / migrate_module / config / install /


嗨,以上给出了以下错误:源目录不存在。源不是目录。
严厉的

5

有一个模块。由于通常yml文件仅在安装时加载。

该模块使您可以定义自动导入哪些模块配置文件。

https://www.drupal.org/project/config_devel

另请参阅此博客文章:https : //blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

开发自己的Drupal 8迁移模块并解决缓存问题

您已经了解到,整个迁移映射现在都在yaml文件中完成。但是如何编写自己的迁移Yaml文件呢?

不幸的是,新的Drupal 8开发人员有一些陷阱。由于Drupal 8 的配置管理界面(https://www.drupal.org/documentation/administer/config),仅在安装模块时才导入“ config / install”目录中的所有yml文件。

如果要开发新的配置文件,这是非常不切实际的。为了解决这个问题,可以安装解决缓存问题的模块“ Configuration Development”(https://www.drupal.org/project/config_devel)。可以在每次请求时导入某些yml文件。但不幸的是,尚不支持drush命令。因此,我们需要将要导入的所有Yaml文件添加到module.info.yml中的新部分。

config_devel:
 install:
   - migrate_plus.migration.page_node
   - migrate_plus.migration.menu_item
   - migrate_plus.migration_group.liip

然后,我们可以在更新yml文件后运行以下命令。这会将新的配置文件导入配置管理界面。

drush cdi <module_name>
drush cr

我无法使它正常工作,并且缺少文档。您能否提供更多信息? drupal.org/node/2845304-
迈克尔·

5

迁移应位于MODULENAME/migrations子目录中。修改迁移配置后,只需简单的drush cr应用更改即可。

配置派生程序会将迁移配置转换回迁移插件。

查看此更改记录:迁移是插件而不是配置实体


2

我在同一个问题上挣扎:如何在开发过程中更新迁移配置。我最终得到的是:

drush cdi1 path-to-config-dir-form-site-root/your-config.yml

config-devel-import-one,命令(cdi1简称)旨在将单个配置导入活动配置。它是上面提到的config_devel模块的一部分。


1

FLY的解决方案没有成功。还必须卸载migrate_tools,以刷新yaml。也没有运气devel_config

我确实找到了这些刷新的配置:

$ drush @site_alias pmu mymodule, migrate_tools, migrate_plus -y
$ drush @site_alias en mymodule, migrate_tools, migrate_plus -y

0

在遵循Peter J Lord的解决方案之后,您还可以将一个配置目录(用于新的或更新的ymls)添加到settings.php文件中。例如:

$config_directories['fresh'] = 'sites/default/fresh';

将新的yml文件放在该目录中,然后使用drush的config-import命令导入新的配置设置:

drush cim fresh --partial 

-1

我发现有时以上都不起作用。甚至将它们结合在一起。但是,我可以诱使migrate_tools提供一些见识。

显然,在列出yml文件之前,它会检查其是否有效。尝试运行导入程序(是的,即使它没有显示为$ drush ms

我的迁移称为产品,所以我做了: $ drush mim products

Migration failed with source plugin exception: The &quot;int&quot; plugin does not exist.

修复此错误(在我的情况下,将int更改为inte),然后按照上述@FLY的回答进行了移植。可惜该错误没有显示出来,而只是默默地失败了,但这是另一个话题。;-)

附注:我会以评论的形式发表,但我的观点还不够。


-2

在上面的FLY回答中,drush cdi <module_name>现在应该是drush cde <module_name>


2
drush cde导出配置并覆盖您拥有的内容。那不是我们想要的。如何接受?
Michael Mallett'2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.