帝国CMS后台在刷新生成内容信息的时候,偶尔会出现: '***.ksiso_ecms_news_data_' doesn't exist的报错,刷新中断,遇到这种情况我们应该如何处理解决?
其实在提示 '***.ksiso_ecms_news_data_' doesn't exist错误的时候,在这条语句的下方还会有一条数据被遮盖起来了,错误语句为:select keyid,dokey,newstempid,closepl,infotags,writer,befrom,newstext from ***_ecms_news_data_ where id='84451' limit 1(我的是有这条错误提示)。
翻阅帝国CMS手册得知:
***_ecms_news_index 数据表字段解释(新闻系统模型-索引表) 的数据索引与实际的内容表的索引出现错误,不匹配。通俗来解释(个人见解不对勿喷):帝国CMS在刷新的时候会过一遍***_ecms_news_index索引表,通过索引表来一条条的更新生成对应的HTML静态页面,当索引表内有索引数据而内容表却没有该ID数据时,就会提示以上错误。
OK!了解了出现原因就很好解决了,我们只需要删掉索引表内在内容表不存在的数据ID数据即可顺利的刷新生成下去。
延伸:
测试***_ecms_news_index 索引表是否出现多余数据MYSQL语句:
select id from 自己的表前缀_ecms_news_index where id not in (select id from 自己的表前缀_ecms_news_data_1)
运行结果为多余数据ID,你可以手动删掉这些不存在的数据,也可以运行下面解决办法内的MYSQL语句一次删除
解决办法:
进入服务器查看MYSQL的管理后台,运行MYSQL语句,帝国后台貌似也有直接运行MYSQL语句的功能(自寻查找),运行语句:
delete from 自己的表前缀_ecms_news_index where id not in (select id from 自己的表前缀_ecms_news_data_1)
题外话:
网上看了其他人解决办法是表前缀_ecms_news_data_1与索引表“”自己的表前缀_ecms_news_index“”进行数据比对,其实 个人觉得操作ID的话表:表前缀_ecms_news都一个意思,因为‘表前缀_ecms_news‘表与'表前缀_ecms_news_data_1'与‘表前缀_ecms_news_index’三个表的数据行数相同,每条数据的ID也都是一一对应的。