站点上线前清理测试文档是必要步骤,但织梦删除涉及多表关联,操作不当会留下垃圾数据。
一、织梦文档关联表结构
一篇文档在数据库中涉及至少 5 张表:
dede_archives主表(标题、属性)dede_arctiny微表(轻量索引)dede_addonarticle正文表dede_taglisttag 关联dede_arccache缓存表
仅删主表会留下大量孤儿数据。
二、安全删除操作步骤
- 先备份数据库:宝塔 → 数据库 → 备份。
- 登录后台 → 核心 → 所有文档列表。
- 使用栏目筛选+ID 排序定位测试文档。
- 勾选后选择"删除"(不要选"移到回收站")。
- 确认删除后进入"系统 → 清理缓存"。
三、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",包括清空测试栏目、删除测试管理员、清理测试评论,确保站点正式发布时数据干净、结构清晰。