Symfony 5.1.2 Unrecognized options „dir_name, namespace“ under „doctrine_migrations“.

Beim letzten Update von Symfony 5.1.0 auf 5.1.2 überraschte mich diese Fehlermeldung:

Unrecognized options "dir_name, namespace" under "doctrine_migrations". Available options are "all_or_nothing", "check_database_platform", "connection", "custom_template", "em", "migrations", "migrations_paths", "name", "organize_migrations", "services", "storage"

Und es hat mich einige Zeit gekostet, herauszufinden woran das lag…

…denn, eigentlich sollte man davon ausgehen können, dass ein reines Bugfix-Update keine Fehler solchen Fehler produziert.

Nun, das Problem war, dass ich doctrine noch als symfony/orm-pack installiert hatte und darin dann die doctrine-Module enthalten sind. Als ich dann

composer update symfony/* --with-all-dependencies

ausgeführt habe, wurde natürlich auch das symfony/orm-pack (und die darin enthaltenen doctrine-Module auf die neueste Version aktualisiert… Das Problem dabei ist, dass inzwischen doctrine 3.0 veröffentlicht wurde und diese Version wohl nicht so einfach kompatibel mit den doctrine 2.x Versionen ist. – Naja, solche Inkompatiblitäten darf man ja tatsächlich bei einer neuen Haupt-Version durchaus erwarten.

Die Lösung

Über Diskussionen auf github mit diversen – für mich überhaupt nicht funktionierenden Lösungsvorschlägen bin ich auf weiteren Umwegen auf diesen Artikel gestoßen: Symfony 4: Unpack the Packs in dem u.a. dringend dazu geraten wurde die ursprünglich ach so bequem installierten symfony/…-packs zu entpacken und dadurch die Original-Module in die composer.json-Liste aufzunehmen.
Dies verhindert dann nämlich ein unbeabsichtigtes Aktualisieren von, hier z.B. den doctrine-Modulen.

und siehe da: ein anschließendes

composer update symfony/* --with-all-dependencies

lief dann auch ohne Probleme durch.

Update

Das Problem ist damit aber noch nicht zu 100% behoben, denn eine einfaches

composer update

läuft immer noch auf denselben Fehler. Abhilfe schafft hier nur noch ein manueller Eingriff in die composer.json: die (immer noch) unlimitierten Versionseinschränkung für die doctrine bundles:

        "doctrine/doctrine-bundle": "*",
        "doctrine/doctrine-migrations-bundle": "*",
        "doctrine/orm": "*",

müssen hier auf Version 2 eingeschränkt werden.

        "doctrine/doctrine-bundle": "~2",
        "doctrine/doctrine-migrations-bundle": "~2",
        "doctrine/orm": "~2",

Genaue Syntax-Erläuterung und Beschreibung findet Ihr in der Composer-Dokumentation.

Bitte, lasst mich wissen, ob Euch das geholfen hat, oder wie Ihr das Problem in den Griff bekommen habt.

P.S.: das gilt natürlich auch noch für Updates von „pre Symfony 5.1.2“ auf Symfony 5.1.3)

This post is also available in: Englisch

Ein Gedanke zu „Symfony 5.1.2 Unrecognized options „dir_name, namespace“ under „doctrine_migrations“.“

  1. Ach, übrigens, dass betrifft wirklich nur Projekte, die vor Symfony 5.1.2 aufgesetzt wurden. Projekte, die mit Symfony 5.1.2 oder später aufgesetzt wurden, funktionieren wunderbar mit Doctrine ^3

    Antworten

Schreibe einen Kommentar