原因是删除文章的时候只删除了dede_archives 表,而dede_arctiny表没做相应的删除行,你会发现有些文章id在dede_arctiny表里依然存在,而dedecms原本为了加快速度的dede_arctiny表反而导致了错误。所以需要我们删除掉那些不存在与dede_archives表中的数据。
这个是查询dede_arctiny表中存在,而dede_archives表中不存在的数据。
SELECT * FROM `dede_arctiny` WHERE not exists( select * from `dede_archives` where dede_arctiny.id = dede_archives.id)
这个是删除语句:
DELETE FROM `dede_archives` WHERE not exists( select * from `dede_archives` where dede_arctiny.id = dede_archives.id);
可以限定栏目,例如typeid为666的栏目
DELETE FROM `dede_archives` WHERE typeid = '666' not exists( select * from `dede_archives` where dede_arctiny.id = dede_archives.id);