[gelöst] Update von 8.7.x auf 8.8.2 - auch mit Pathauto 1.6 fehlerhaftes Update - Warum?
am 29.02.2020 - 03:28 Uhr in
Hallo,
ich versuche ein Update auf 8.8.2 durchzuführen. Aber leider funktioniert es nicht richtig und ich verstehe einfach nicht wieso.
Ausgangsversion ist einmal 8.7.9 und einmal 8.7.11 - mit beiden Versionen erhalte ich die gleichen Fehlermeldungen.
Ich führe das Update manuell durch.
Ich habe zunächst alle Module einem Update unterzogen - allen voran Pathauto (das muss ja die Version 1.6 haben, vor dem Core Update 8.8.x). Einziges Modul das ich nicht aktualisiert habe, weil das noch mehr Probleme verursacht hat: Asset Injector (meine Version: 2.4; aktuelle Version: 2.6).
Dann lösche ich die Verzeichnisse "core" und "vendor" und alle Dateien im root-Verzeichnis.
Dann kopiere ich aus der entzippten 8.8.2 Installation die Verzeichnisse "core" und "vendor" und alle Dateien im root-Verzeichnis in mein Drupal-Installationsverzeichnis.
Dann habe ich die setup.php überarbeitet:
<?php
//selbstverständlich habe ich hier jeweils den richtigen Pfad zu meinem Verzeichnis eingetragen, das sich jeweils außerhalb der Drupal-Installation befindet
$settings['file_private_path'] = '/path/to/private';
$settings['file_temp_path'] = '/path/to/temp';
//am Ende der setup-Datei:
$settings['config_sync_directory'] = '........' //anstatt $config_directories['sync']
?>
Dann habe ich die "update.php" aufgerufen und die DB-Aktualisierungen durchgeführt. Sah erst alles normal aus, aber dann kommt zuerst folgender Fehler:
Aktualisiere
Ein nicht zu behebender Fehler ist aufgetreten – siehe nachfolgende Fehlermeldung. Es empfiehlt sich, diese zwecks Bezugnahme in die Zwischenablage zu kopieren.
Weiter zur Fehlerseite
Ein AJAX-HTTP-Fehler ist aufgetreten.
HTTP-Rückgabe-Code: 200
Im Folgenden finden Sie Debugging-Informationen.
Pfad: /update.php/start?id=251&op=do_nojs&op=do
Statustext: OK
Antworttext:
Und auf der Fehlerseite erscheint dann folgendes:
Die folgenden Aktualisierungen haben Nachrichten zurückgegeben:
system-Modul
Aktualisierung #8803
• The "path_alias" entity type has been installed.
Aktualisierung #8804
• Fehlgeschlagen: Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY': INSERT INTO {path_alias} (id, revision_id, uuid, path, alias, langcode, status) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, ......); Array ( [:db_insert_placeholder_0] => 1 [:db_insert_placeholder_1] => 1 [:db_insert_placeholder_2] => 1907f813-81be-4f39-92c7-dd93a7609a50 [:db_insert_placeholder_3] => /node/1 [:db_insert_placeholder_4] => /startseite ....................) in Drupal\Core\Database\Connection->handleQueryException() (Zeile 692 in /.../www/.../drupal_8/core/lib/Drupal/Core/Database/Connection.php).
Das ganze wird genau 1399 mal aufgerufen - für jeden URL-Alias (jedes nodes, jedes Taxonomie-Terms etc.)
Die Seite kann aber normal aufgerufen werden - auch die URL-Aliase passen noch zu den Beiträgen. Im Statusbericht heisst es aber folgendes:
Datenbankaktualisierungen
Veraltet
Einige Module müssen Änderungen an der Datenbank vornehmen. Das Datenbankaktualisierungsskript sollte umgehend ausgeführt werden.
Wenn ich dann nochmal "update.php" aufrufe, will es folgende Aktualisierungen durchführen:
13 ausstehende Aktualisierungen
system module
8804 - Convert path aliases to entities.
8805 - Change the provider of the 'path_alias' entity type and its base fields.
Populate the new 'match_limit' setting for the ER autocomplete widget.
Update all entity form displays that contain extra fields.
Clear the schema cache.
media module
Add a status extra filter to the media view default display.
path module
Create the language content settings configuration object for path aliases.
search module
Configures default search page for instantiated blocks.
taxonomy module
Add status with settings to all form displays for taxonomy entities.
text module
Update text_with_summary fields to add summary required flags.
Update text_with_summary widgets to add summary required flags.
views module
Define default values for limit operators settings in all filters.
Remove core key from views configuration.
Danach erscheint dann der selbe Fehler wie zuvor und im Statusbericht bleibt die Meldung bestehen.
Wieso passiert das?
Ich habe doch Pathauto auf 1.6 aktualisiert vor dem Update...
Was habe ich übersehen? Was falsch gemacht?
Was müsste ich noch anpassen/ändern vor dem Update?
Ich hoffe jemand von euch kann mir hier helfen.
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich kann dazu nur soviel
am 29.02.2020 - 12:02 Uhr
Ich kann dazu nur soviel sagen: eine Drupal-Installation, die mit composer gemacht wurde hat solche Probleme nicht. Ich empfehle dringend jede Drupal Installation auf die Benutzung von composer umzustellen. Das bedeutet, daß man sich mit der Kommandozeile vertraut macht und unter Umständen einen (virtuellen) Unix-Server o.ä. lokal installiert, auf dem man die Arbeit mit composer durchführt. Anschließend kann man die lokale Software-Installation zu seinen Provider transferieren. Das ist alles kein Hexenwerk und kann von jedem erlernt werden. Dadurch werden alle Abhängigkeiten zwischen den einzelnen Bausteinen der Drupal-Installation ordnungsgemäß behandelt.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
OK, ich habe jetzt mal meinen
am 29.02.2020 - 14:33 Uhr
OK, ich habe jetzt mal meinen Hoster gefragt, ob ich Composer installieren kann. Wollte ich sowieso, weil ich mir schon dachte, dass es wichtiger werden wird.
Aber eigtl. müsste doch ein "normales" Update auch funktionieren, wenn man eben diverses beachtet. Bestimmt habe ich nicht alles bedacht und irgendwas übersehen oder einfach nicht gewusst, dass ich es machen müsste vor dem Update.
Vielleicht hilft ja dieser
am 28.04.2020 - 09:01 Uhr
Vielleicht hilft ja dieser Patch?
"Updating core 8.7 -> 8.8 with pathauto not possible":
https://www.drupal.org/project/pathauto/issues/3131286
Ok, ich habe es jetzt endlich geschafft!!
am 20.06.2020 - 14:56 Uhr
Ok, ich habe es jetzt endlich geschafft!! Nach nur fast 4 Monaten. Wow!
Erstmal: Vielen Dank pyretta, deine Antwort hat mir sehr weitergeholfen bei der Suche nach der Lösung.
Wie habe ich es geschafft?
Nun...
Mittlerweile habe ich jetzt auf 8.7.14 aktualisiert (was super easy ablief ohne Probleme/Fehlermeldungen) und versuchte auf 8.8.x zu aktualisieren.
Natürlich alles beim alten, also Fehlermeldungen deluxe (s. oben).
Der 1. Lösungsansatz, der wirklich SEHR viel brachte: Vor dem Update einfach die beiden Tabellen path_alias und path_alias_revision leeren (TRUNCATE TABLE)! Quelle: https://www.drupal.org/project/drupal/issues/3100063
Dann erhält man zwar trotzdem noch eine Fehermeldung und auch im Statusbericht die Meldung "Datenbankaktualisierungen - Veraltet" - aber damit lies sich arbeiten.
Fehlgeschlagen: InvalidArgumentException: Placeholders must have a trailing [] if they are to be expanded with an array of values. in Drupal\Core\Database\Connection->expandArguments() (Zeile 738 in /drupal_8/core/lib/Drupal/Core/Database/Connection.php).
Habe dann das Modul pathauto von 1.6 direkt auf 1.8 aktualisiert - wegen Hinweis von pyretta, aber es blieb bei dieser Fehlermeldung.
Eine weitere Google-Suche brachte dann den entscheidenden 2. Lösungsansatz: Folgender Patch für den watchdog! (wie soll man da drauf kommen, dass das zusammenhängt?!) https://www.drupal.org/project/drupal/issues/2999869#comment-13703111
Danach nochmal das update-Script aufrufen - und - ES FUNKTIONIERT! Keine Fehlermeldung mehr!
System läuft jetzt mit 8.8.8 - jetzt kann ich hoffentlich auch auf 8.9.x bzw. 9.x updaten.
Oh mann, was für eine Odyssee!
Vielen Dank an alle, die mir hier geholfen haben: wla und pyretta!
Laureline schrieb OK, ich
am 20.06.2020 - 16:29 Uhr
OK, ich habe jetzt mal meinen Hoster gefragt, ob ich Composer installieren kann. Wollte ich sowieso, weil ich mir schon dachte, dass es wichtiger werden wird.
Man muss composer nicht unbedingt installieren, wenn der Hoster das nicht anbietet. Es reicht auch, die composer.phar-Datei hochzuladen und per php auszuführen.