Wie aktualisiere ich neue Migrationen im Drupal 8-Migrationsmodul?


10

Beim Schreiben von Drupal 8-Migrationsprozessen kann ich neue Migrationsprozesse nur aktualisieren, wenn ich das benutzerdefinierte Migrationsmodul neu installiere. Drush Cr funktioniert nicht.

Erläuterung:

Ich habe ein Modul, dh : cm_migrations, das 2 Migrationen hat:

  • cm_users
  • cm_tags

Mit drush mssehe ich:

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                                

Ich schreibe einen neuen Migrationsprozess:

  • cm_beers

Ich führe aus drush cr; drush msund sehe die gleiche Tabelle wie zuvor.

Nur wenn ich deinstalliere und installiere, cm_migrationskann ich die drei Migrationsprozesse sehen:

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              

Gibt es einen Hinweis darauf, wie ich die Migrationsprozesse aktualisieren kann, ohne das Modul neu zu installieren?

Vielen Dank


Außerdem kann ich sagen, dass migrate.migration.cm_beers.ymldie Migration nicht fehlschlägt , wenn ich den Migrationsprozess ausführe, den Inhalt von lösche und den Prozess erneut ausführe. Der Inhalt der yaml-Datei scheint irgendwo zwischengespeichert zu sein.
Ignacio Sánchez

Antworten:


18

Ich fand das funktionierte für mich

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


Hallo, das obige gibt den folgenden Fehler: Das Quellverzeichnis existiert nicht. Die Quelle ist kein Verzeichnis.
Harshal

5

Dafür gibt es ein Modul. Da normalerweise die yml-Dateien nur bei der Installation geladen werden.

Mit diesem Modul können Sie definieren, welche Modulkonfigurationsdateien automatisch importiert werden.

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

Siehe auch diesen Blog-Beitrag: https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

Entwickeln Sie Ihre eigenen Drupal 8-Migrationsmodule und bekämpfen Sie Caching-Probleme

Sie haben gelernt, dass die gesamte Migrationszuordnung jetzt in Yaml-Dateien erfolgt. Aber wie wäre es, wenn Sie Ihre eigenen Migrations-Yaml-Dateien schreiben?

Leider gibt es einige Fallstricke für neue Drupal 8-Entwickler. Aufgrund der Konfigurationsverwaltungsschnittstelle ( https://www.drupal.org/documentation/administer/config ) von Drupal 8 werden alle yml-Dateien im Verzeichnis "config / install" nur bei der Installation des Moduls importiert.

Dies ist sehr unpraktisch, wenn Sie neue Konfigurationsdateien entwickeln möchten. Um dies zu beheben, kann ein Modul „Konfigurationsentwicklung“ ( https://www.drupal.org/project/config_devel ) installiert werden, das die Caching-Probleme behebt. Es ist möglich, bei jeder Anfrage bestimmte yml-Dateien zu importieren. Leider werden Drush-Befehle noch nicht unterstützt. Wir müssen also alle Yaml-Dateien, die wir importieren möchten, in einen neuen Abschnitt in unserer module.info.yml einfügen.

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

Anschließend können wir nach dem Aktualisieren der yml-Datei die folgenden Befehle ausführen. Dadurch wird die neue Konfigurationsdatei in die Konfigurationsverwaltungsoberfläche importiert.

drush cdi <module_name>
drush cr

Ich kann das nicht zum Laufen bringen, und die Dokumentation fehlt. Können Sie uns etwas mehr Informationen geben? drupal.org/node/2845304
Michael Mallett

5

Migrationen sollten sich im MODULENAME/migrationsUnterverzeichnis befinden. Nach dem Ändern einer Migrationskonfiguration drush crreicht ein einfaches aus, um die Änderungen zu übernehmen.

Ein Konfigurationsderiver verwandelt eine Migrationskonfiguration wieder in ein Migrations-Plugin.

Siehe diesen Änderungsdatensatz: Migrationen sind Plugins anstelle von Konfigurationsentitäten


2

Ich hatte mit dem gleichen Problem zu kämpfen: Wie aktualisiere ich die Migrationskonfiguration während der Entwicklung? Folgendes habe ich erreicht:

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

config-devel-import-oneDer Befehl ( cdi1kurz) dient zum Importieren einer einzelnen Konfiguration in die aktive Konfiguration. Dies ist der oben erwähnte Teil des Moduls config_devel.


1

Ich hatte keinen Erfolg mit der Lösung von FLY. Musste auch migrate_tools deinstallieren, um yaml's zu aktualisieren. Und kein Glück mit devel_config.

Ich habe diese aktualisierten Konfigurationen gefunden:

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

0

Nach der Lösung von Peter J Lord können Sie Ihrer Datei settings.php auch ein Konfigurationsverzeichnis (für neue oder aktualisierte ymls) hinzufügen. z.B:

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

Platzieren Sie neue XML-Dateien in diesem Verzeichnis und importieren Sie die neuen Konfigurationseinstellungen mit dem Befehl config-import von drush:

drush cim fresh --partial 

-1

Ich habe festgestellt, dass manchmal keine der oben genannten Arbeiten. Sogar sie alle kombinieren. Ich könnte jedoch migrate_tools dazu verleiten, mir einen Einblick zu geben.

Anscheinend wird geprüft, ob die yml-Datei gültig ist, bevor sie aufgelistet wird. Versuchen Sie, den Importer auszuführen (ja, auch wenn er nicht mit angezeigt wird $ drush ms).

Meine Migration wurde als Produkte bezeichnet, also habe ich: $ drush mim products

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

Wenn Sie diesen Fehler beheben (in meinem Fall int in integer ändern) und dann der obigen Antwort von @FLY folgen, wird die Migration angezeigt. Schade, dass der Fehler nicht aufgetreten ist und nur lautlos fehlgeschlagen ist, aber das ist ein anderes Thema. ;-);

PS Ich hätte dies als Kommentar gepostet, aber ich habe noch nicht genug Punkte.


-2

In der Antwort von FLY oben drush cdi <module_name>sollte nun sein drush cde <module_name>.


2
drush cde exportiert die Konfiguration und überschreibt, was Sie haben. Das wollen wir nicht. Wie wird das akzeptiert?
Michael Mallett
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.