我应该使用模块卸载菜单吗?

时间:2010-08-02 09:38:45

标签: drupal drupal-6

在我的网站上使用Drupal几个月后,我注意到模块列表中的模块卸载选项卡。

我总是通过从文件系统中删除文件夹来解除我的模块(在禁用它们之后)。我想知道这是否是错误的删除方法。

由于

6 个答案:

答案 0 :(得分:7)

当你卸载模块,而不是只是禁用和删除时,你让模块自行清理,包括:

  • 删除它创建的表格
  • 删除它使用的系统变量。

因此,对于数据库的运行状况而言,卸载是一个很好的清理。事情会好起来不行,但为什么要在数据库中保留未使用的表?

注意:
由模块创建者来创建清理所需的代码,因此并非所有模块都能很好地完成这项工作。

答案 1 :(得分:3)

  

我总是通过从文件系统中删除文件夹来解除我的模块(在禁用它们之后)。我想知道这是否是错误的删除方法。

模块中使用的文件不是模块在Drupal站点上留下的唯一内容;卸载模块时,还有数据库表,Drupal变量,仍需要删除的缓存值。模块也可能将行添加到从不同模块创建的数据库表中 删除模块文件时,不会删除对表系统中包含的模块的任何引用。这意味着如果在删除它之后复制相同的模块,并且确实删除了它的表,则模块不会重新创建所需的数据库表。

我肯定会说这是卸载模块的错误方法。

答案 2 :(得分:2)

有时需要卸载,因为如果刚刚禁用了模块,则不会触发hook_install()。因此,例如,如果模块有一些损坏的数据,禁用和重新启用将不会删除它。

你可能会对你的方法感到满意。然而,有一点需要做的就是做以下事情。

  1. 禁用
  2. 删除文件夹
  3. 稍后再将模块放回(不是同一版本)
  4. 卸载。
  5. 原因是hook_install()和hook_uninstall()应该是彼此的镜像。更新挂钩用于使模块架构和设置保持最新与hook_install()中提供的内容,如果您要使用更新的模块卸载(不更新),它将尝试卸载不同的设置到什么是预期。事情会发生严重错误的风险很小,但值得小心。

答案 3 :(得分:1)

卸载选项卡将删除数据库中与模块相关的任何内容。此操作要求模块仍然存在于模块目录中。

简单地删除文件并不是“错误”,但它会在您的数据库中留下不必要的错误。卸载选项卡不会为您删除模块文件,您需要像以前一样自己执行此操作。

答案 4 :(得分:1)

Drush使模块卸载过程更加愉快,例如:

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

事实上,Drush使一切变得更加愉快(下载/安装模块,处理安装配置文件,创建数据库备份以及我个人喜欢的,更新整个代码库)。如果您还没有使用它,我强烈建议您尝试一下。

答案 5 :(得分:0)

您可以查看this link - 模块可能有一些额外的卸载说明,但看​​起来大多数都没有 - 这就是您没有任何问题的原因:)