it-swarm.com.de

Gibt es eine Möglichkeit, Module nach der Installation einer Version mit einem Datenbankupdate sicher herunterzustufen?

Ich habe eine Site mit vielen Modulen, auf denen Drupal 7.) ausgeführt wird. Ich habe gerade eine Reihe von Modulaktualisierungen installiert, update.php Ausgeführt und dann einige Tests ausgeführt, bei denen ich festgestellt habe dass eines der Modul-Updates eine wichtige Funktion auf meiner Site zerstört hat.

Nach einigen weiteren Tests stellte ich fest, welches Modul-Update die Funktion unterbrach (ein Update von rc1 auf rc2). Durch das Zurücksetzen dieses Moduls auf die vorherige Version (rc1) wird die Funktion auf meiner Site wiederhergestellt. Als ich rc2 installierte, gab es jedoch ein Update der Datenbank für dieses Modul, das ausgeführt wurde, als ich update.php Ausführte.

Ich werde warten, bis rc3/a 1.0 dieses Moduls erneut aktualisiert wird. Ist es jedoch sicher, die alte rc1-Version einfach über rc2 neu zu installieren? Oder könnte dies später zu größeren Problemen führen und sollte ich stattdessen von einem Backup zurückkehren?

Ich gebe keine spezifischen Modulnamen an, da ich gerne wissen möchte, welche allgemeinen Best Practices (falls vorhanden) für das "Downgrade" von Modulen gelten.

6
Patrick Kenny

Ich denke, die Antwort ist, dass "es darauf ankommt".

Wenn hook_update_N gerade Indizes hinzugefügt hat, sollten Sie sicher sein. Wenn Spalten hinzugefügt oder geändert werden, kann die Instanz bestimmte Teile des Moduls verwenden, andere schlagen jedoch fehl (z. B. Teile, die in der Datenbank gespeichert werden). Schlimmer noch, Sie könnten anfangen, inkonsistente Daten in der Datenbank für die benutzerdefinierten Tabellen abzurufen. Sie sollten auch einen Fehler bezüglich der Datenbank im Statusbericht sehen.

Ich würde mir das betreffende Modul ansehen, nach den hook_update_N - Definitionen suchen und sehen, was sich geändert hat. Es kann im Änderungsprotokoll dokumentiert sein, aber ich vertraue nicht immer darauf, dass alles protokolliert wurde. Machen Sie dann ein Urteil darüber, was zu tun ist.

6
mpdonadio

Ich benutze ein Modul namens Backup and Migrate nachdem ich es auf "Backup jeden Tag" gesetzt habe, habe ich ein Backup, wenn ich das Backup vergessen habe, bevor ich ein Modul-Update durchführe.

Ich denke, die Antwort lautet "Ja", wenn Sie ein Backup erstellt haben, und "Nein". Sie können versuchen, den Code mit der aktualisierten Datenbank zu verwenden, aber ob er funktioniert, hängt vom Update ab. Aber auch die meisten Datenbankaktualisierungen fügen Felder hinzu oder vergrößern Felder, so dass dies kein Problem darstellt. Die Änderungen sind auch im Modul-Update enthalten, sodass Sie leicht sehen können, was das Update bewirkt hat. Und kehren Sie das Update sogar manuell um, wenn Sie Lust haben, herumzustöbern.

Das eigentliche Risiko besteht, wenn Felder oder Tabellen gelöscht oder umbenannt werden.

Ich habe das allerdings nicht recherchiert. Es ist nur meine Erfahrung, Module zu installieren und eigene Modul-Updates/Installationsdateien zu schreiben.

Nachdem Backup and Migrate nicht installiert war, brauchte ich einen halben Tag, um alles wieder normal zu machen (ich hoffe, dies hilft jedem, der (ein bisschen) neu in drupal) ist oder hat dieses Modul noch nicht gefunden)

5
FLY

Mir ist klar, dass dieser Beitrag alt ist, aber immer noch aktiv ist, aber ich musste nach einer Möglichkeit zum Rollback suchen, als ich beim Aktualisieren von Drupal 7.41 => 7.43) eine Reihe von Modulen aktualisierte. Ich erhielt eine PHP Error: Fatal error: Class 'EntityCacheUserController' not found in /var/www/html//includes/common.inc on line 7999

Ich habe auch die Dateien und die Datenbank gesichert, aber nach einer weniger zeitintensiven Lösung gesucht.

Ich habe den Drush-Befehl Rebuild-Registry ausgeführt (keine Standardoption). Durch Ausführen des Befehls gefolgt von drush cc all wurde die Site wieder online geschaltet.

Ich hoffe das hilft.

/ r

0
r2coder