Frage

Ist es möglich, die Aktualisierungsfunktion eines einzelnen Moduls über Dreh zu erfüllen? Ich kann es sehen drush updatedb Dies nimmt keinen Modulennamen als Argument an und führt alle verfügbaren Updates aus. Dann ist da drush pm-update Wich überprüft auch neue Dateien. das Dokumentation sagt:

(Gleich wie PM-UpdateCode + UpdatedB)

Bedeutet das, wenn ich laufe? drush pm-update Jedes verfügbare Update (neuere Update_Function) wird durchlaufen? Gibt es eine Möglichkeit, genau ein Modul genau zu aktualisieren (DB)?

War es hilfreich?

Lösung

Nein, du kannst nicht.

Wenn Sie jedes Modul selbst aktualisieren möchten, aktualisieren Sie nur die Dateien eines einzelnen Moduls und führen Sie dann aktualisiert aus.

Andere Tipps

Auf Drosel 5.7 können Sie den Befehl ausführen drush pm-update --no-core module-name. DRUSH stützt automatisch das aktuelle Modul, lädt die neue Version herunter und fordert Sie auf, die Datenbank zu aktualisieren.

Wenn Sie nur ein Update ausführen möchten, können Sie ausführen drush eval foo_update_33(), zum Beispiel. In der Praxis ist es etwas komplexer als das, da Sie die .install -Datei, aber nicht viel laden müssen.

Sie können auch @macaleaa -Lösung ausprobieren:

drush php-eval 'module_load_install('my_module');my_module_update_7XXX();'

weder drush up someproject, noch drush upc someproject scheinen nur die zu aktualisieren someproject Modul. Ein anderer Weg als das, was Sie wollen, ist:

drush dl someproject #use --select option to be prompted for a module version
                     #this will overwrite your exising module's files
                     #backup your modules files with --backup, yourself, use a VCS to revert
drush updb           #run available database update scripts

Hier ist Diskussion ein ähnliches Thema auf Drupal.org. Pass' auf dich auf !

Ich verwende Drush 5.9 und kann ein einzelnes Modul mit diesem Befehl erfolgreich aktualisieren:

drush dl *project*

Zum Beispiel zum Aktualisieren des Entwicklungsmoduls:

drush up devel

Ich glaube, das ist jetzt mit Dreh up:

drush up module_name

Ich hatte eine Situation, in der eine Tabelle durch eine Aktualisierungsfunktion erstellt wurde (MYMODULE_update_7101), aber auf diese Tabelle wurde in Codes irgendwo in jedem Cache -klaren und fast jeden Drush -Anruf (im Grunde genommen die Namen von Entitätstypen für alle Menüs und was auch immer) zugegriffen. Betrieb drush updatedb lief MYMODULE_update_7101 Dritter statt zuerst.

Ich habe die von @macaleaa und @moshe Weitzman von Running vorgeschlagene Lösung ausprobiert:

drush php-eval 'module_load_install('MYMODULE');MYMODULE_update_7101();'

vor dem Laufen drush updatedb, Aber das half nicht - der Drehlauf ist fehlgeschlagen, weil updatedb versuchte erneut zu rennen MYMODULE_update_7101() und fehlerhaft, sagte, dass der Tisch bereits existierte. Grundsätzlich hatte der obige Code das Update ausgeführt, aber seine Marke für das System, das das Update ausgeführt hatte, nicht gelassen. Vermutlich gibt es eine ganze Reihe anderer Sachen update.php Muss nach dem Ausführen jedes Updates die neueste Versionsnummer für das Modul im DB usw. speichern.

Ich ging durch update.php Um zu sehen, wie tatsächlich jede Aktualisierungsfunktion ausgeführt wird und was sie danach tut, suchen Sie nach einer Funktion zum Aufrufen der Aktualisierungsfunktion und werden auch alle anderen Dinge ausführen. Ich bin dazu gekommen:

include_once DRUPAL_ROOT . "/includes/update.inc";
$c["results"]["#abort"] = array();
update_do_one("MYMODULE", 7101, array(), $c);

Was ich tatsächlich mit Drehung gelaufen bin:

drush eval 'include_once DRUPAL_ROOT . "/includes/update.inc"; $c["results"]["#abort"] = array(); update_do_one("MYMODULE", 7101, array(), $c);'

Es wurde das Update ausgeführt, kein Problem, aber dann wurde MyModule Version 7101 in der Liste der Updates immer noch angezeigt, als ich rannte updatedb, Obwohl es ohne zu irren lief und alles bei der Inspektion der Website gut aussah.

Ein bisschen hacky und 6 Jahre zu spät, aber alles ist gut, das endet gut?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top