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 ms
sehe 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 ms
und sehe die gleiche Tabelle wie zuvor.
Nur wenn ich deinstalliere und installiere, cm_migrations
kann 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
migrate.migration.cm_beers.yml
die 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.Antworten:
Ich fand das funktionierte für mich
quelle
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
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.
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.
quelle
Migrationen sollten sich im
MODULENAME/migrations
Unterverzeichnis befinden. Nach dem Ändern einer Migrationskonfigurationdrush cr
reicht 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
quelle
Ich hatte mit dem gleichen Problem zu kämpfen: Wie aktualisiere ich die Migrationskonfiguration während der Entwicklung? Folgendes habe ich erreicht:
config-devel-import-one
Der Befehl (cdi1
kurz) dient zum Importieren einer einzelnen Konfiguration in die aktive Konfiguration. Dies ist der oben erwähnte Teil des Moduls config_devel.quelle
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:
quelle
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:
Platzieren Sie neue XML-Dateien in diesem Verzeichnis und importieren Sie die neuen Konfigurationseinstellungen mit dem Befehl config-import von drush:
quelle
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 "int" 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.
quelle
In der Antwort von FLY oben
drush cdi <module_name>
sollte nun seindrush cde <module_name>
.quelle