Есть ли способ "жесткого сброса" модуля?


Я не уверен, почему, но у меня возникли серьезные проблемы с несколькими модулями, но наиболее заметно - с модулем регистрации. Проблемы, с которыми я сталкиваюсь, являются внезапными, и вчера их не было, поэтому я знаю, что это не проблема с дизайном модуля. Я пробовал исправления, но они вызвали другие проблемы. Тогда мне пришло в голову: почему я должен делать что-то подобное? Разве не должно быть способа "жесткого сброса" модуля? (т.е. удалите модуль и любые его остатки из базы данных drupal и начните с нуля, как если бы модуль никогда не был установлен в первую очередь, а затем перейдите и переустановите его) Я попытался удалить его, удалить файлы модуля, повторно загрузить и включить, но при повторном включении я получаю те же ошибки. Как я могу удалить его, как будто его никогда не было с самого начала, чтобы я мог начать с чистого листа?

Author: Ephraim, 2012-02-27

5 answers

Этот ответ отражает мое понимание того, как работает Drupal. Любой, у кого есть большее или иное понимание, пожалуйста, говорите громче, я хотел бы знать больше.

Удаление всех остатков модуля путем его удаления работает только так, как работает код, включенный модулем для очистки после себя. Например, если он внес изменения, такие как добавление таблиц или иное изменение базы данных, и не удалил таблицы должным образом, они останутся там. Удаление модуля, следует устранить большую часть его потенциальной возможности вызвать проблему при условии, что ядро Drupal знает, что оно исчезло, и не зависает в поисках крючков, предоставленных модулем. Ты уже бежал'update.php "в URL-адресе? Это приведет к тому, что Drupal обновит все подключения к модулю. Если модуль исчез, он не будет выполнять вызовы, на которые нельзя ответить.

Единственный способ по-настоящему сбросить Drupal - это поддерживать резервные копии. Создавайте резервные копии перед установкой любого модуля и, по крайней мере, каждый день или около того во время разработки сайта. Модуль Резервное копирование и миграция - это простой способ упростить резервное копирование базы данных сайта. Кроме того, также неплохо изучить возможность использования Git для отслеживания вашего кода при разработке сайта. Git в основном является инструментом unix, но существуют версии пользовательского интерфейса Windows, такие как GitGui, которые нетрудно изучить и использовать для отслеживания вашего кода.

 7
Author: Ashlar, 2012-02-27 04:19:45

Основываясь на вашем комментарии, ссылающемся на приведенную ниже ошибку, я не думаю, что жесткий сброс поможет:

Исключение PDO: Состояние SQLSTATE[42S02]: Базовая таблица или представление не найдено: 1146 Таблица "masada_drupal.field_data_field_date" не существует: ВЫБЕРИТЕ ПОДСЧИТЫВАТЬ(*) КАК выражение ИЗ (ВЫБЕРИТЕ n.nid КАК nid, n.заголовок КАК заголовок, n.тип КАК тип, s.статус КАК signup_status, s.close_signup_limit КАК signup_close_signup_limit, 1 КАК выражение ИЗ {узла} n ВНУТРЕННЕЕ СОЕДИНЕНИЕ {регистрация} s НА s.nid = n.nid СЛЕВА ВНЕШНЕЕ СОЕДИНЕНИЕ {журнал регистрации} s_l НА s.nid = s_l.nid ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ {field_data_field_date} d НА d.entity_id = n.nid ГРУППИРОВАТЬ ПО nid, названию, типу, статусу регистрации, подписанию_close_signup_limit) подзапрос; Массив () в pagerdefault->выполнить() (строка 74 в файле /var/www/masadatactical.com/htdocs/включает/pager.inc)

Похоже, что это известная ошибка для порта D7 модуля регистрации . В первом комментарии есть исправление , которое может помочь.


К ответьте на ваш вопрос о том, как выполнить "жесткий сброс" модуля:

В идеальном мире я считаю, что отключение модуля, а затем удаление (не удаление) будет эквивалентно "жесткому сбросу".

Как только "не установлен", просто снова включите модуль, и все готово.

Учитывая, что это не идеальный мир, вам может потребоваться поискать в своей базе данных таблицы, которые не были должным образом "удалены", и удалить их вручную.

Я бы рекомендовал сделать резервную копию БД перед вы начинаете удалять модули или таблицы.

Возможно, вам захочется сначала найти известные ошибки удаления для модуля регистрация.

 4
Author: Citricguy, 2012-02-27 04:24:27

Самый простой способ - использовать drush и переустановить модуль, либо с помощью команды Devel:

drush -y dre foo

Или используя стандартный способ:

drush -y dis foo && drush -y pm-uninstall foo && drush -y en foo

Вам не нужно удалять какие-либо файлы.

 1
Author: kenorb, 2015-07-23 12:55:43

Вы действительно удалили модуль или просто отключили его?

На странице модулей есть вкладка "удалить". после отключения модуля вам необходимо посетить эту вкладку, чтобы запустить сценарий фактического удаления модуля. Если модуль собран правильно, этот сценарий удаления удалит все следы модуля из базы данных.

 0
Author: sheena_d, 2012-02-27 04:00:01

У меня была аналогичная проблема с другим модулем. Проблема заключалась в некоторых данных, которые хранились в одной из таблиц базы данных самого модуля.

Жесткий сброс модуля обычно подразумевает его повторную установку с данными по умолчанию в его таблицах. В Drupal-7 многие модули предоставляют методы для их полного удаления путем удаления таблиц базы данных. Это можно сделать, перейдя к admin/modules/uninstall. После удаления его отсюда вы можете переустановить его, и все будет по-новому.

Однако большинство модулей не предоставляют этой функции. В этом случае вам придется немного рискнуть, удалив соответствующие таблицы из базы данных. Просто сделай резервную копию, прежде чем идти на убийство. Удаление таблиц во многих случаях работало для меня просто отлично. Но позвольте мне еще раз предупредить вас. Это рискованно. После удаления тщательно проверьте свой сайт, если он где-то поврежден.

Для удаления вручную лучше всего изучить код модуля и посмотрите, какие таблицы он создал. А затем удалите соответствующие таблицы.

 0
Author: shivams, 2016-03-11 12:12:03