Можно ли выполнить функцию обновления одного модуля с помощью Drush? Я вижу, drush updatedb
что не принимает modulename в качестве аргумента и запускает все доступные обновления. Затем есть drush pm-update
также проверка новых файлов. в документации сказано:
(так же, как pm-updatecode + updatedb)
Означает ли это, что при запуске drush pm-update
каждого доступного (более нового выхода update_function) будет выполнено обновление? Есть ли способ только (дБ) обновить только один модуль?
Ответы:
Нет, ты не можешь.
Если вы хотите обновить каждый модуль самостоятельно, обновите только файлы одного модуля и затем запустите updatedb.
источник
drush dl
(вы, вероятно, хотите сначала удалить старый модуль, чтобы не хранить старые файлы, не предназначенные для новой версии!)На Drush 5.7 вы можете запустить команду
drush pm-update --no-core module-name
. Drush автоматически создаст резервную копию текущего модуля, загрузит новую версию и предложит обновить базу данных.источник
Если вы хотите запустить только одно обновление, вы можете запустить
drush eval foo_update_33()
, например. На практике это немного сложнее, так как вам нужно загрузить файл .install, но не намного.Вы также можете попробовать решение @macaleaa:
drush php-eval 'module_load_install('my_module');my_module_update_7XXX();'
источник
function devel_update_7000
это та, которая имеет наименьшее число и будет выполняться сначала, затемfunction devel_update_7001
и т. Д.drush php-eval 'module_load_install('file_entity');file_entity_update_7211();'
ни кажется
drush up someproject
, ниdrush upc someproject
обновить толькоsomeproject
модуль. Другой путь к тому, что вы хотите, через:Здесь обсуждается похожая тема на Drupal.org. Береги себя !
источник
drush up someproject
работает, но, к сожалению, он по умолчанию проверяет ВСЕ доступные обновления для включенных модулей (которые не нужны), пишет «Доступно обновление» для некоторых из них, но ТОЛЬКО обновляет конкретный проект. Вот скриншот: i.imgur.com/TDDmB.png . Как видите, доступно несколько обновлений, но обновляется только xmlsitemapdrush up xmlsitemap
.Я использую Drush 5.9 и могу успешно обновить один модуль с помощью этой команды:
Так, например, чтобы обновить модуль 'devel':
источник
Я считаю, что теперь это возможно с Drush, используя
up
:источник
У меня была ситуация, в которой таблица создавалась функцией update (
MYMODULE_update_7101
), но эта таблица использовалась в коде где-то в каждом очищенном кеше и почти при каждом вызове drush (это было в основном получение имен типов сущностей для всех меню и любых других еще). Бегdrush updatedb
бежалMYMODULE_update_7101
третьим вместо первого.Я попробовал решение, предложенное @macaleaa и @moshe weitzman:
перед запуском
drush updatedb
, но это не помогло - пробежка не удалась, потому чтоupdatedb
снова попытался запуститьMYMODULE_update_7101()
и выдал ошибку, говоря, что таблица уже существует. По сути, приведенный выше код запустил обновление, но не оставил след в системе, в которой было выполнено обновление. Предположительно, существует множество других вещей,update.php
которые необходимо выполнить после запуска каждого обновления, чтобы сохранить номер последней версии модуля в БД и т. Д.Я
update.php
посмотрел, как на самом деле выполняется каждая функция обновления и что она делает после этого, искал функцию для вызова, которая бы вызывала функцию обновления, а также делал все остальное. Я закончил тем, что добирался до этого:Который я на самом деле побежал с drush:
Он запустил обновление, без проблем, но тогда MYMODULE версии 7101 все еще показывался в списке обновлений, когда я запустился
updatedb
, хотя он работал без ошибок, и все выглядело хорошо при проверке сайта.Немного взволнован и опоздал на 6 лет, но все хорошо, что хорошо кончается?
источник