使用SQL查询

如果你对数据库操作比较熟悉,可以直接通过SQL查询来删除或移动旧帖子。这种方法需要一定的数据库操作知识。


示例SQL查询:


删除指定日期之前的所有帖子:

DELETE FROM `dz_forum_thread` WHERE dateline < UNIX_TIMESTAMP('2021-01-01');
DELETE FROM `dz_forum_post` WHERE dateline < UNIX_TIMESTAMP('2021-01-01');


注意:dateline 是帖子创建的时间戳。你需要将 '2021-01-01' 替换为你希望清理的日期。


移动指定日期的帖子到特定版块:

UPDATE `dz_forum_thread` SET fid=X WHERE dateline < UNIX_TIMESTAMP('2021-01-01');

这里 fid 是目标版块的ID,你需要替换 X 为正确的版块ID。


如果你熟悉SQL,可以直接在数据库中运行SQL查询来删除旧帖。例如,要删除所有超过3个月未被回复的帖子,你可以使用以下SQL命令:

DELETE FROM `forum_post` WHERE `dateline` < DATE_SUB(NOW(), INTERVAL 3 MONTH) AND `first` = 0;


注意: 这个命令只会删除回复帖,如果你想删除主题帖,可以将first字段设置为1。例如:

DELETE FROM `forum_post` WHERE `dateline` < DATE_SUB(NOW(), INTERVAL 3 MONTH) AND `first` = 1;


3. 清理附件和图片

删除帖子后,还应清理与这些帖子相关的附件和图片。这可以通过运行以下SQL命令来完成:

DELETE FROM `forum_attachment` WHERE `pid` NOT IN (SELECT `pid` FROM `forum_post`);
DELETE FROM `forum_attachment_used` WHERE `aid` NOT IN (SELECT `aid` FROM `forum_attachment`);


4. 优化数据库

在删除大量数据后,运行数据库优化命令来回收空间并提高性能:

OPTIMIZE TABLE `forum_post`, `forum_attachment`, `forum_attachment_used`;