Ist es möglich, die Update-Funktion eines einzelnen Moduls über drush auszuführen? Ich kann sehen, drush updatedb
welche keinen Modulnamen als Argument nimmt und alle verfügbaren Updates ausführt. Dann wird drush pm-update
auch nach neuen Dateien gesucht. In der Dokumentation heißt es:
(wie pm-updatecode + updatedb)
Bedeutet dies, dass drush pm-update
jedes verfügbare Update (neuere Update_Function-Exits) ausgeführt wird? Gibt es eine Möglichkeit, nur genau ein Modul (db) zu aktualisieren?
Antworten:
Nein, kannst du nicht.
Wenn Sie jedes Modul einzeln aktualisieren möchten, aktualisieren Sie nur die Dateien eines einzelnen Moduls und führen Sie anschließend updatedb aus.
quelle
drush dl
(Sie möchten wahrscheinlich zuerst das alte Modul löschen, damit Sie keine älteren Dateien behalten, die nicht für die neue Version vorgesehen sind!)Unter Drush 5.7 können Sie den Befehl ausführen
drush pm-update --no-core module-name
. Drush sichert automatisch das aktuelle Modul, lädt die neue Version herunter und fordert Sie auf, die Datenbank zu aktualisieren.quelle
Wenn Sie nur ein Update ausführen möchten, können Sie es beispielsweise ausführen
drush eval foo_update_33()
. In der Praxis ist es etwas komplexer, da Sie die .install-Datei laden müssen, aber nicht viel.Sie können auch die @macaleaa-Lösung ausprobieren:
drush php-eval 'module_load_install('my_module');my_module_update_7XXX();'
quelle
function devel_update_7000
ist die mit der niedrigsten Nummer und wird zuerst ausgeführt, dannfunction devel_update_7001
usw.drush php-eval 'module_load_install('file_entity');file_entity_update_7211();'
Weder scheinen
drush up someproject
nochdrush upc someproject
nur dassomeproject
Modul zu aktualisieren . Ein anderer Weg zu dem, was Sie wollen, ist durch:Hier wird ein ähnliches Thema auf Drupal.org diskutiert. Pass auf !
quelle
drush up someproject
funktioniert, ABER leider überprüft es ALLE verfügbaren Updates für aktivierte Module auch standardmäßig (was nicht benötigt würde), schreibt "Update verfügbar" für einige von ihnen, aktualisiert aber NUR das spezifische Projekt. Hier ist ein Screenshot: i.imgur.com/TDDmB.png . Wie Sie sehen, sind mehrere Aktualisierungen verfügbar, aber nur mit xmlsitemap werden Aktualisierungen durchgeführtdrush up xmlsitemap
.Ich verwende Drush 5.9 und kann mit diesem Befehl ein einzelnes Modul erfolgreich aktualisieren:
So aktualisieren Sie beispielsweise das Modul 'devel':
quelle
Ich glaube, dass dies jetzt mit Drush möglich ist, mit
up
:quelle
Ich hatte eine Situation, in der eine Tabelle durch eine Update-Funktion (
MYMODULE_update_7101
) erstellt wurde, aber auf diese Tabelle wurde in Code irgendwo in jedem Cache-Speicher und bei fast jedem Drush-Aufruf zugegriffen (im Grunde wurden die Namen der Entitätstypen für alle Menüs und was auch immer abgerufen) sonst). Laufendrush updatedb
warMYMODULE_update_7101
dritter statt erster.Ich habe die von @macaleaa und @moshe weitzman vorgeschlagene Lösung ausprobiert:
vor dem Laufen
drush updatedb
, aber das hat nicht geholfen - der Drush-Lauf ist fehlgeschlagen, weilupdatedb
erneut versucht wurde zu laufenMYMODULE_update_7101()
und ein Fehler aufgetreten ist, der besagt, dass die Tabelle bereits existiert hat. Grundsätzlich hat der oben genannte Code das Update ausgeführt, aber auf dem System keine Spuren hinterlassen, dass das Update ausgeführt wurde. Vermutlichupdate.php
muss nach jedem Update eine ganze Reihe anderer Dinge erledigt werden, um die neueste Versionsnummer für das Modul in der Datenbank usw. zu speichern.Ich ging durch, um
update.php
zu sehen, wie es tatsächlich jede Update-Funktion ausführt und was es danach tut, und suchte nach einer aufrufbaren Funktion, die die Update-Funktion aufruft und auch alle anderen Dinge erledigt. Am Ende kam ich dazu:Womit ich eigentlich drush gelaufen bin:
Das Update lief, kein Problem, aber dann tauchte MYMODULE Version 7101 immer noch in der Update-Liste auf, als ich lief
updatedb
, obwohl es ohne Fehler lief und bei der Inspektion der Site alles gut aussah.Ein bisschen hacky und 6 Jahre zu spät, aber alles gut, das gut endet?
quelle