Должен ли я использовать модуль деинсталляции меню? - PullRequest
3 голосов
/ 02 августа 2010

После нескольких месяцев использования Drupal для моих сайтов я заметил вкладку удаления модулей в списке модулей.

Я всегда удалял свои модули, удаляя их папки из файловой системы (после их отключения).Мне было интересно, если это неправильный способ их удаления.

Спасибо

Ответы [ 6 ]

7 голосов
/ 02 августа 2010

Когда вы удаляете модуль, а не просто отключаете и удаляете его, вы позволяете модулю очищаться после него, включая:

  • Удалить созданные таблицы
  • Удалить системные переменные, которые он использовал.

Так что удаление - это хорошая чистка для здоровья вашей базы данных. Все будет хорошо, если не делать этого, но зачем хранить неиспользуемые таблицы в вашей базе данных?

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

3 голосов
/ 02 августа 2010

Я всегда удалял свои модули, удаляя их папки из файловой системы (после их отключения). Мне было интересно, если это неправильный способ удалить их.

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

Я бы определенно сказал, что это неправильный способ удаления модуля.

2 голосов
/ 02 августа 2010

Иногда требуется удаление, так как hook_install () не сработает, если модуль просто отключен. Так, например, если в модуле есть поврежденные данные, отключение и повторное включение не удалит это.

Вы, вероятно, будете в порядке в вашем подходе. Однако одна вещь, которую надо утомить, - это делать следующее.

  1. Отключить
  2. Удалить папку
  3. Позже снова установите модуль обратно (не той же версии)
  4. деинсталляция.

Причина этого заключается в том, что hook_install () и hook_uninstall () должны быть зеркальными отражениями друг друга. Хуки обновления используются для поддержания схемы и настроек модуля в актуальном состоянии с помощью функции hook_install (), если для деинсталляции (без обновления) нужно использовать обновленный модуль, он будет пытаться удалить другой набор, соответствующий тому, что ожидается. Риск мал, что что-то пойдет не так, но стоит быть осторожным.

1 голос
/ 02 августа 2010

Drush делает процесс удаления модулей намного приятнее, например:

drush pm-disable [module]  // or its shorthand drush dis [module]
drush pm-uninstall [module]

Фактически, Drush делает практически все более приятным (загрузка / установка модулей, работа сустановка профилей, создание резервных копий БД и мой личный фаворит, обновление всей вашей базы кода).Если вы еще не используете его, я настоятельно рекомендую попробовать.

1 голос
/ 02 августа 2010

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

Простое удаление файлов не является «неправильным», но оно оставит ненужные ошибки в вашей базе данных.Вкладка удаления не удалит файлы модуля для вас, вам нужно сделать это самостоятельно, как вы это делали.

0 голосов
/ 02 августа 2010

Вы можете проверить эту ссылку - модули могут иметь некоторые дополнительные инструкции по удалению для них, но похоже, что большинство из них не имеют - поэтому у вас не было никаких проблем:)

...