织梦删除测试文档批量操作

站点上线前清理测试文档是必要步骤,但织梦删除涉及多表关联,操作不当会留下垃圾数据。

一、织梦文档关联表结构

一篇文档在数据库中涉及至少 5 张表:

仅删主表会留下大量孤儿数据。

二、安全删除操作步骤

  1. 先备份数据库:宝塔 → 数据库 → 备份。
  2. 登录后台 → 核心 → 所有文档列表。
  3. 使用栏目筛选+ID 排序定位测试文档。
  4. 勾选后选择"删除"(不要选"移到回收站")。
  5. 确认删除后进入"系统 → 清理缓存"。

三、SQL 批量删除方案

3.1 按栏目清空

SET @typeid=5;
DELETE FROM dede_addonarticle WHERE aid IN (SELECT id FROM dede_archives WHERE typeid=@typeid);
DELETE FROM dede_taglist WHERE aid IN (SELECT id FROM dede_archives WHERE typeid=@typeid);
DELETE FROM dede_arctiny WHERE typeid=@typeid;
DELETE FROM dede_archives WHERE typeid=@typeid;

3.2 按 ID 范围删除

DELETE a, t, l, c
FROM dede_archives a
LEFT JOIN dede_addonarticle t ON a.id=t.aid
LEFT JOIN dede_taglist l ON a.id=l.aid
LEFT JOIN dede_arccache c ON a.id=c.aid
WHERE a.id BETWEEN 100 AND 500;

四、删除后清理工作

建议:执行以下 SQL 清理孤立数据并优化表:
-- 清理 addonarticle 孤儿记录
DELETE FROM dede_addonarticle
WHERE aid NOT IN (SELECT id FROM dede_archives);

-- 清理 taglist 孤儿记录
DELETE FROM dede_taglist
WHERE aid NOT IN (SELECT id FROM dede_archives);

-- 优化表空间
OPTIMIZE TABLE dede_archives, dede_addonarticle, dede_taglist;

五、常见问题原因分析

5.1 删除后列表仍显示

原因:仅删主表,dede_arctiny 未同步。

解决:执行 DELETE FROM dede_arctiny WHERE id NOT IN (SELECT id FROM dede_archives)

5.2 删除后页面 500

原因:静态 HTML 文件未删除,但数据库记录已无。

注意:删除文档后必须执行"重新生成所有",否则前台访问已删文档会触发 500。

六、文件系统清理

静态化模式下,删除文档后 /a/ 目录可能残留 HTML 文件。建议执行:

# 删除空目录与无主 HTML
find /www/wwwroot/yoursite/a -name "*.html" -mtime +30 -exec rm -f {} \;

七、回收站机制使用

建议开启"文档回收站",删除操作先进入回收站,48 小时后再彻底清理:

// /data/common.inc.php
$cfg_arc_recycle=1;

八、行动指引

清理完成后,建议生成全站 sitemap 并提交百度,告知搜索引擎已删除的 URL。同时建立"上线前清理 Checklist",包括清空测试栏目、删除测试管理员、清理测试评论,确保站点正式发布时数据干净、结构清晰。