Ich habe zwei Drupal-Sites in meiner lokalen Ubuntu Desktop 15.10 Apache2 (2.4.12) -Umgebung installiert: Eine ist eine Neuinstallation von Drupal 8 und die zweite ist eine Kopie einer vorhandenen Arbeits-Site, die mit Drupal 7 (hauptsächlich Kernmodule) erstellt wurde basiert, sehr bescheiden mittels Seiten). Beide Websites funktionieren überall problemlos.
Mein Ziel ist in erster Linie das Upgrade der Drupal 7-Site auf Drupal 8. Ich habe alle vorbereitenden Schritte wie das Konfigurieren derselben Sprachen durchgeführt. Mithilfe von Modulen auf ein Minimum beschränken (alle Module auf der D7-Site deinstallieren, die ich nach dem Upgrade problemlos zurückbringen könnte ), um sicherzustellen, dass an beiden Standorten usw. dieselben Module installiert sind, und jetzt möchte ich nur meine Drupal 7-Site in die neue Drupal 8-Site "transzendieren" (ich hoffe, es ist eine gute Formulierung).
Um mein Ziel zu erreichen, habe ich das Drupal-Upgrade- Modul auf meiner Drupal 8-Site installiert, bin zu localhost / sitename / upgrade gegangen und habe alle Details der Drupal 7-Site eingegeben.
Als ich auf die Schaltfläche "Upgrade überprüfen" geklickt habe, wurde folgende Fehlermeldung angezeigt:
Die Quellendatenbank enthält keine erkennbare Drupal-Version.
Ich habe diesen Fehler als exakten Ausdruck gegoogelt ("Fehler") und nur sehr wenige Ergebnisse gefunden. Die meisten von ihnen scheinen mir ein PHP-Programmierwissen zu erfordern, das ich noch erworben habe, daher kann ich nicht feststellen, ob der Fehler auf einen Fehler zurückzuführen ist (zumal dieses Modul noch in der starken Entwicklung ist) oder auf meinen Fehler in Verständnis des Konzepts \ der Funktionalität dieses Moduls.
Welche Gründe gibt es dafür, dass das D8 Drupal-Upgrade-Modul die von mir bereitgestellte D7-Datenbank nicht "mag"? Vor allem, wenn die Drupal 7-Site sowohl online als auch lokal einwandfrei funktioniert.
Wäre die Migration eine anständige Alternative für ein Upgrade, wenn ein Upgrade aus irgendeinem Grund nicht möglich ist? Wenn ja, was ist die einfachste Lösung für die Migration?
Ich ging zu /var/www/html/benia/modules/migrate_upgrade/src/MigrationCreationTrait.php und tat:
-- return $version_string ? substr($version_string, 0, 1) : FALSE;
++ return 7;
++ return $version_string ? substr($version_string, 0, 1) : FALSE;
Dann wurde dieser Fehler oben auf dem Bildschirm angezeigt.
Antworten:
Derzeit gibt es
simple
meines Erachtens keine Option für ein Upgrade von 7 auf 8. Wie Sie im Versionshinweis sehen können:Ein bisschen technisch hinter den Kulissen: Von Version 7 bis 8 behalten sie das gleiche Konzept bei, wenn sie eine Baustelle erstellen (wie Knoten, Entität, Berechtigung, Ansichten ...), aber nicht den Kern. Ich würde sagen: Sie haben alles in OOP, Symfony-Komponente, Architektur geändert. Es gibt also keine Möglichkeit,
upgrade
direkt von einer anständigen Version auf 8.0 zu Ihrer Drupal-Site zu gelangenmigrate
. Somigrating
sollte der Prozess aussehen:Die Kosten für diesen Prozess sind (leider) gleich, um eine neue Site oder mehr neu zu erstellen. Schauen Sie sich mit der Nummer 3 diesen Artikel in Phase 2 an: https://www.phase2technology.com/blog/upgrading-to-a-drupal-8-site/
quelle
Ihre Fehlermeldung stimmt genau mit der Zeichenfolge in der Zeile unter http://cgit.drupalcode.org/migrate_upgrade/tree/src/MigrationCreationTrait.php#n40 im Code des Moduls "Drupal Upgrade" ( https: / /www.drupal.org/project/migrate_upgrade ).
Es zeigt, dass es sich nicht um einen Fehler handelt, sondern um eine "ausgelöste Ausnahme". Wenn ich mir die 3 vorhergehenden Zeilen dieses Codes anschaue, denke ich, dass es nur ein Problem beim Einrichten der Verbindung ist.
Vielleicht hilft das auch:
ein Zitat aus der Ausgabe https://www.drupal.org/node/2628440 (Kommentar Nr. 3):
Gefolgt von Kommentar Nr. 4 in derselben Ausgabe: "Das Bereitstellen des Tabellenpräfixes hat das Problem behoben."
Und natürlich würde der Kommentar von benjy (danke!) Auch helfen, mehr Details über den tatsächlichen Fehler zu erhalten, auf den Sie stoßen , dh:
Sie können einen solchen Druck (vorübergehend) zwischen den Zeilen 122 und 123 in den über den Link angezeigten Code einfügen.
quelle
Sobald Sie die Codebasis zwingen, das Lesen von {system} zu überspringen, stirbt sie, wenn die nächste Datenbanktabelle {field_config_instance} nicht gefunden wird. Mit anderen Worten: Es liest Ihre D7-Datenbank nicht. Vielleicht versucht es, den D8 zu lesen, vielleicht etwas ganz anderes, wie können wir das wissen? Höchstwahrscheinlich geben Sie die falsche DB-Konfiguration ein (z. B. befinden sich die beiden Standorte auf unterschiedlichen Servern, wobei der MySQL-Server auf beiden lokalen Hosts ist, localhost jedoch nicht auf demselben Server). Ich habe gerade sowohl das Migrate Upgrade Contrib-Modul als auch den Kerncode des Migrate-Moduls überprüft, und es wäre äußerst überraschend, wenn es einen Fehler in Bezug auf das Präfix geben würde, da beide ein gesamtes Array mit Datenbankeinstellungen behandeln, nicht Stück für Stück.
Es ist unmöglich zu sagen, wie Sie dies beheben können, ohne Zugriff auf Ihre Informationen zu haben. Es tut uns leid. Wenn ich könnte, würde ich dafür stimmen, aber da es ein Kopfgeld gibt, kann ich nicht. Wir können Ihnen nicht helfen und diese Frage wird anderen nicht helfen. Die einzig mögliche Hilfe ist folgende: Lesen und verstehen Sie Ihre Drupal 7-Einstellungsdatei und geben Sie dem Migrate Upgrade-Modul die richtigen Anmeldeinformationen (Die große Anzahl von Kommentaren zeigt bereits, dass dies nirgendwo hin führt.)
Eine mögliche längerfristige Lösung wäre eine Funktion im Contrib-Modul, mit der Benutzer ihre settings.php hochladen können, und dann könnten wir versuchen, diese zu verwenden. Das ist extrem zerbrechlich, aber ich denke, es ist einen Versuch wert. Wenn jemand Zeit hat, es zu codieren ...
Ich habe keine Ahnung, warum die Leute dies so stark befürwortet haben. Gibt es noch jemanden, der das gleiche Problem hat?
quelle
Es ist viel Zeit vergangen, seit ich dies gepostet habe, aber ich glaube, ich weiß jetzt, was das Problem war:
Ich habe 2-3 Module installiert gelassen, was ich (damals) für "so einfach" hielt, also war ich mir sicher, dass sie einen Migrationspfad haben, genau wie alle Kernmodule.
Wenn ich mich richtig erinnere, waren dies: Metatag und Redirect (Sie wechseln von D7 Globalredirect & Redirect zu Redirect in Drupal 8).
Ich habe diese nicht nur auf der D7-Site belassen, sondern auch auf der D8 installiert, sodass keine der Versionen meiner Site bei Bedarf nur für den Kern bestimmt war.
Es war meine erste Migration und ich habe diesen Fehler als absoluter Neuling im Projekt gemacht. Ich war wirklich davon überzeugt, dass "es nicht sein kann", dass diese Module keinen Migrationspfad haben (und wenn Sie daran denken, sollten sie es wirklich haben), aber dann stellte ich fest, dass normalerweise nur Kernmodule und so etwas vorhanden sind Andernfalls sollte ein benutzerdefinierter oder Contrib-Migrationspfad vorhanden sein.
Nur damit Sie wissen --- Diese und andere Module verfügen über Contrib-Migrationspfade, die Sie verwenden können, indem Sie sie mit diesem Migrationspfad patchen (Sie "injizieren" ihn mit dem Pfad in das Modul).
Jedenfalls war das damals bei mir nicht der Fall und ich war mir sicher, dass es mit dem System kommt ...
Ich habe mich schmerzlich geirrt und dies scheint mir der einzige Grund zu sein, warum die obige Migration fehlgeschlagen ist. Ich habe diese Annahme sogar mit einem kleinen Experiment bekräftigt, das ich vor meiner letzten erfolgreichen Migration vor etwa zwei Monaten durchgeführt habe.
quelle
Sobald ich diese Fehlermeldung erhalten habe. Es stellte sich heraus, dass es sich um das von mir "drupal_" festgelegte $ db_prefix handelt. Sie sollten dies in erweiterte Optionen einfügen.
Grüße, Carlos Aleman
quelle