Est-il possible d'effectuer la fonction de mise à jour d'un seul module via drush? Je peux voir drush updatedb
lequel ne prend pas un nom de module comme argument et exécute toutes les mises à jour disponibles. Il y a ensuite drush pm-update
qui vérifie également les nouveaux fichiers. la documentation dit:
(identique à pm-updatecode + updatedb)
Est-ce à dire que si drush pm-update
j'exécute toutes les mises à jour disponibles (les sorties de update_function plus récentes) seront effectuées? Existe-t-il un moyen de (db) mettre à jour exactement un module?
Réponses:
Non, tu ne peux pas.
Si vous souhaitez mettre à jour chaque module individuellement, mettez à jour uniquement les fichiers d'un seul module, puis exécutez updatedb.
la source
drush dl
(vous voulez probablement supprimer l'ancien module en premier afin de ne pas conserver les anciens fichiers non destinés à la nouvelle version!)Sur Drush 5.7, vous pouvez exécuter la commande
drush pm-update --no-core module-name
. Drush sauvegarde automatiquement le module actuel, télécharge la nouvelle version et vous invite à mettre à jour la base de données.la source
Si vous souhaitez exécuter une seule mise à jour, vous pouvez l'exécuter
drush eval foo_update_33()
, par exemple. En pratique, c'est un peu plus complexe que cela car il faut charger le fichier .install mais pas beaucoup.Vous pouvez également essayer la solution @macaleaa:
drush php-eval 'module_load_install('my_module');my_module_update_7XXX();'
la source
function devel_update_7000
est celle avec le nombre le plus bas, et sera exécutée en premier, puisfunction devel_update_7001
, etc.drush php-eval 'module_load_install('file_entity');file_entity_update_7211();'
ni
drush up someproject
, nidrush upc someproject
semblent ne mettre à jour que lesomeproject
module. Une manière différente de ce que vous voulez est:Voici une discussion sur un sujet similaire sur Drupal.org. Prends soin !
la source
drush up someproject
FONCTIONNE, MAIS malheureusement, il vérifie TOUTES les mises à jour disponibles pour les modules activés par défaut également (ce qui ne serait pas nécessaire), écrit "Update available" pour certains d'entre eux, mais met à jour UNIQUEMENT le projet spécifique. Voici une capture d'écran: i.imgur.com/TDDmB.png . Comme vous pouvez le voir, plusieurs mises à jour sont disponibles, mais seul xmlsitemap est mis à jour à l'aidedrush up xmlsitemap
.J'utilise Drush 5.9, et je peux mettre à jour un seul module avec succès avec cette commande:
Ainsi, par exemple, pour mettre à jour le module 'devel':
la source
Je pense que c'est désormais possible avec Drush, en utilisant
up
:la source
J'ai eu une situation dans laquelle une table créée par une fonction de mise à jour (
MYMODULE_update_7101
), mais cette table était consultée dans le code quelque part dans chaque cache clair et presque chaque appel drush (il obtenait essentiellement les noms des types d'entité pour tous les menus et autres) autre). Courirdrush updatedb
couraitMYMODULE_update_7101
troisième au lieu de premier.J'ai essayé la solution suggérée par @macaleaa et @moshe weitzman de courir:
avant de courir
drush updatedb
, mais cela n'a pas aidé - le run de drush a échoué car aupdatedb
essayé à nouveau de s'exécuterMYMODULE_update_7101()
et s'est trompé, disant que la table existait déjà. Fondamentalement, le code ci-dessus avait exécuté la mise à jour, mais n'avait pas laissé sa marque sur le système que la mise à jour avait été exécutée. Vraisemblablement, il y a tout un tas d'autres chosesupdate.php
à faire après avoir exécuté chaque mise à jour pour stocker le dernier numéro de version du module dans la base de données, etc.Je suis allé
update.php
voir comment il exécute réellement chaque fonction de mise à jour et ce qu'il fait après, en recherchant une fonction à appeler qui appellerait la fonction de mise à jour et ferait toutes les autres choses. J'ai fini par y arriver:Ce que j'ai couru avec drush:
Il a exécuté la mise à jour, pas de problème, mais la version 7101 de MYMODULE est toujours apparue dans la liste des mises à jour lorsque j'ai exécuté
updatedb
, bien que cela se soit déroulé sans erreur et tout semblait bien lors de l'inspection du site.Un peu hacky et 6 ans de retard, mais tout va bien qui se termine bien?
la source