Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

后台回收站无法清空,20212的垃圾帖删到眼泪都出来了,求SQL 语句!

[复制链接]
木毅子 发表于 2012-8-26 23:13:12 | 显示全部楼层 |阅读模式
本帖最后由 木毅子 于 2012-8-26 23:17 编辑

等待审核的主题数(20212)回收站中的主题数(20212)  都无法清理掉,求帮忙!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
mark35 发表于 2012-8-27 01:50:11 来自手机 | 显示全部楼层
直接操作数据库吧
回复

使用道具 举报

m.king 发表于 2012-8-28 09:30:04 | 显示全部楼层
直接清空怎么不行  提示什么?
回复

使用道具 举报

mark35 发表于 2012-8-28 10:10:20 | 显示全部楼层
“等待审核的主题”和“回收站中主题”是后台最慢的旮旯。楼主2万多记录,估计打开一次至少15秒钟。
直接运行SQL TRUNCATE TABLE 吧
回复

使用道具 举报

 楼主| 木毅子 发表于 2012-8-29 13:12:22 | 显示全部楼层
m.king 发表于 2012-8-28 09:30
直接清空怎么不行  提示什么?

就是无法直接清空,点击清空,显示0主题被清空,这些帖子还显示着,我用数据库清空了
回复

使用道具 举报

IDC866.com 发表于 2012-8-29 15:05:54 | 显示全部楼层
从源头抓起,从根本解决才成。
回复

使用道具 举报

 楼主| 木毅子 发表于 2012-8-29 20:23:16 | 显示全部楼层
IDC866.com 发表于 2012-8-29 15:05
从源头抓起,从根本解决才成。

表示听不懂
回复

使用道具 举报

mark35 发表于 2012-8-30 10:24:09 | 显示全部楼层
本帖最后由 mark35 于 2012-8-30 10:32 编辑
木毅子 发表于 2012-8-29 13:12
就是无法直接清空,点击清空,显示0主题被清空,这些帖子还显示着,我用数据库清空了

这个问题从dz7就存在了,根本原因是你看到的垃圾箱中帖子数量不是统计 threadsmod/threadmod 这张表中总记录,而是统计threads主题表中的displayorder = -1的记录数量。这就会造成即便你清空了threadsmod表但依旧显示回收站不为空。

但是主题回收站查询代码偷懒没做连表查询,而是直接显示threadsmod,当然进去就看不到,严谨的SQL应该是类似这样(pgsql版本):

  1.         $sql = "
  2.             SELECT t.*, f.name AS forumname FROM
  3.                 (SELECT * FROM
  4.                     (SELECT DISTINCT ON (t.tid) t.tid, t.fid, t.authorid, t.author, t.subject, t.views, t.replies, t.dateline, t.lastpost, t.lastposter,
  5.                         tm.uid moduid, tm.username modusername, tm.dateline moddateline, tm.action modaction
  6.                         FROM {$tablepre}threads t
  7.                         LEFT JOIN  {$tablepre}threadsmod tm ON tm.tid = t.tid
  8.                         WHERE t.displayorder='-1'
  9.                         ORDER BY t.tid DESC, moddateline DESC
  10.                     ) t
  11.                     ORDER BY moddateline DESC NULLS LAST, t.lastpost DESC, t.tid DESC LIMIT $lpp OFFSET $start_limit
  12.                 ) t
  13.             LEFT JOIN {$tablepre}forums f ON f.fid = t.fid ORDER BY t.moddateline DESC NULLS LAST, t.lastpost DESC, t.tid DESC
  14.             ";    // 外层 moddateline 排序需要显式 NULLS LAST, 内层则不需要显式 NULLS LAST,因为有NOT NULL约束
复制代码


可以手工执行SQL,删除主题表中 displayorder为-1的主题
回复

使用道具 举报

IDC866.com 发表于 2012-8-30 18:48:18 | 显示全部楼层
从源头抓起,别让垃圾进来。   这应该懂。
回复

使用道具 举报

 楼主| 木毅子 发表于 2012-8-31 08:28:31 | 显示全部楼层
mark35 发表于 2012-8-30 10:24
这个问题从dz7就存在了,根本原因是你看到的垃圾箱中帖子数量不是统计 threadsmod/threadmod 这张表中总记 ...

谢谢!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-2-27 20:38 , Processed in 0.029215 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表