某些节点显示在内容列表中,即使它们不再存在。
当我点击它们时,我得到一个空页。
我想知道我是否可以删除“节点”表中的行,或者我应该清理其他内容。
感谢
答案 0 :(得分:3)
首先:在管理页面上,转到性能,然后单击清除所有缓存按钮。如果它无法解决您的问题,请尝试禁用每个contrib,并查看问题是否仍然存在。如果没有,请尝试逐个启用它们,您将知道哪个贡献者出现了问题。将其报告给模块的问题队列。
如果禁用模块无法解决您的问题,请下载drush
。尝试使用node_delete
直接删除节点。示例(如果错误的节点的nid是3):
drush php-eval 'node_delete(3);'
如果您不熟悉命令行,可以使用这个小PHP文件(将它放入Drupal的根目录):
include './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
node_delete(3);
如果它不起作用,则从数据库进行备份,从节点表中删除该节点并浏览每个与节点相关的表(具有nid列),并删除相关条目。
答案 1 :(得分:2)
这可能不是你的问题,但是:
您不希望直接从数据库中删除行。你最终无法知道你的数据库之后的形状。节点ID存在于许多表中,节点通过多个表分发。
浏览nodeapi并使用Drupal框架,因为这就是它的意思!节点api将正确处理您的数据库模式。
请参阅: http://api.drupal.org/api/function/node_delete/6
因此,如果您知道节点ID,则可以调用node_delete。
答案 2 :(得分:0)
请注意(取决于您的Drupal权限)您可能需要以具有删除节点权限的用户身份运行 - 例如user-1而不是默认的匿名用户。您可以通过预先附加node_delete()
来电,
global $user;
$user = user_load(1);
如果删除许多节点并通过浏览器调用PHP文件,您可能还会遇到超时。一个解决方法是通过命令行调用PHP文件(如果你有shell访问权限)。例如,
php -f custom-script.php
同样,如果要删除许多节点,也可能会耗尽内存。增加脚本调用的PHP内存限制,如下所示,
php -f custom-script.php -d memory_limit=512M
这适用于我使用Drupal 6的测试。请注意,您也可以通过在custom-script.php
中设置显式超时来修复服务器超时问题。