首页 > 常识 > 互联网 > 网站制作 > CMS

Table data doesn't exist 数据表不存在的解决办法

作者:shenghuobaodian.com  时间:2016-04-04
描述:这篇文档是为解决《帝国网站管理系统》刷新内容页报错提供参考的,如果你是使用了其他的系统,那么,建议重点考虑三个关键数据表的ID是否对应的问题。
《生活宝典shenghuobaodian.com》讯 这篇文档是为解决《帝国网站管理系统》刷新内容页报错提供参考的,如果你是使用了其他的系统,那么,建议重点考虑三个关键数据表的ID是否对应的问题。
 
最近,我在运用《帝国网站管理系统》的网站多端访问功能制作《生活宝典》手机版时,遇到了一点小小的问题:生成内容页提示Table 'shenghuobaodian_ecms_health_data_' doesn't exist.
 
由于是第一次遇到这样的问题,对于“Table doesn't exist”的报错,虽然怀疑是某个数据表的问题,但是并不知道是哪一张表。于是,我以“Table data doesn't exist”为关键词,从网上查找相关问题,整理出了三个可以提供解决问题参考的思想方法:一是可能的原因是修改了栏目所属系统模型导致;二是检查 ecms_news_data 以及 ecms_news_index 等ID的值是否与 ecms_news 中的FILENAME值一致。三是先备份数据库,然后执行下面2个SQL语句:
 
select id from phome_ecms_news where id not in (select id from phome_ecms_news_data_1)
 
delete from phome_ecms_news where id not in (select id from phome_ecms_news_data_1)
 
删除表里的那个记录,运行:delete from phome_ecms_news where id=12345
 
我首先是考虑第三种方法。在登陆后台发现,官方有提示:要谨慎使用SQL语句查询,可能导致损坏数据,于是作罢。接着,就对栏目检查了一番,也没有发现问题。这时候就觉得,很可能就是第二个方法所说的情况了,本来我从一开始也是往这方面怀疑的,在刷新内容页到2100ID时便报找不到,于是很怀疑应该是2100之后才出现故障点的,因此我就将2100-2200做为重点,逐个检查了 health_data 数据表,还有 ecms_health_index 数据表,并没有发现有不对应的ID存在。
 
倒是《帝国网站管理系统》的刷新数据表功能,帮了这一次的大忙。我的思路是,通过逐步缩小范围,来挤压问题点。如果使用全部刷新内容页,范围过大,于是,就想到了逐个刷新数据表的办法。在刷新其他的数据表的时候,都成功刷新了,然而在刷新“健康”数据表的时候,就出现了报错,这说明问题存在这个数据表里。但是,这个数据表依然有很多ID记录,查找起来也不容易。接着,我再缩小范围,逐个刷新“健康”数据表里的大栏目再到小栏目,最终发现,原来是在“健康-食物-老人”这里报的错,而这个栏目才17篇记录,很容易就发现了这里有2102,2104,2105,2106却没有2103,数据表的ID正确的格式是按照顺序排列下去的。怀疑可能是这个问题。不过此时,我还有另外一个怀疑,揣测会不会是有“内容存文本的文档”在搬家上传的时候有疏漏的,但结果也不是。这时我就将重点放在查看老人这里ID是否对应的问题上了,再检查 ecms_health_1;ecms_health_data_1;ecms_health_index_1 三个数据表时,立即就查看到:ecms_health_index 有一个2103的ID,而另外两个却没有2103的ID。
 
E_D("replace into `shenghuobaodian_ecms_health_index` values('2103','84','1','1436315268','1436315268','1436315268','0');");
最后的一个值,正确应该是'1',但是这里却是'0',说明当时在提交文章的时候,出现错误,没有生成页面。但是这个表里却有了这条ID记录,由于没有成功,就导致了 ecms_health_data 和 ecms_health 两个表都无相应的记录,也就是说缺少了一个“2103”的ID,于是,在刷新页面的时候,因为这三个表不能够相对应,便会在刷新到这里的时候,报告错误。
 
解决办法:1、把 ecms_health_index 里2103这一条直接删除即可。2、如果追求整齐划一,达到自己觉得连续流畅感,可以在 ecms_health_data 和 ecms_health 两个表里都添加上记录一条2103的ID即可。形式如:
 
数据表ecms_health_data
E_D("replace into `shenghuobaodian_ecms_health_data` values('2103','84','','1','3','0','0','');");
 
数据表ecms_health
E_D("replace into `shenghuobaodian_ecms_health` values('2103','84','0','0','0','0','','2103','0','游客*','0','0','0','0','0','1','0','1436315268','1436315268','1','0','0','','http://www.shenghuobaodian.com/Health/Food/10/2103.html','1','1','1','膳食原则','老人健康膳食原则','1436315268','','','一般参考性文章。','2015/0707/abc123');");
 
同时还需注意两点:一是将 ecms_health_index 里“2103”最后的一个值'0'更改为'1';二是本地制作一个 abc123.php 上传到文本目录里即可,里面的内容后面再修改即可。
 
但是,接下来才发现,如果是从数据库里编辑的话,要是想加上一条ID记录是挺麻烦的,数据库好像是有很多的箱子,每个箱子放上一个数据,感觉没有地方可以插入。那么,你可以首先从后台将数据库的表备份一遍,然后再将 ecms_health_data 和 ecms_health 下载到本地,使用 Macromedia Dreamweaver MX 软件,将这条插进去即可,之后再上传到你刚才备份的目录,恢复数据即可。也可以使用数据库的导入功能实现。这里,建议还是找到后直接删除最好,因为日后还会出现这种情况的,是很麻烦的。
 
需要提醒的是,有的人把这种情况说成是“多出了ID”,表述的不准确,怎么会多呢?只存在少了ID。如果你在做网站的时候,加以细心的话,其实,当时就可以发现问题了,在你发布文章的时候,有时候,有可能会因为服务器和网路的问题,是会导致不能够完整生成信息的,你懂这个原因的话,当场就知道是缺了哪一条ID了。这一次,我就是不知道几天前提示'1436315268','1436315268',是干什么用的,还以为就是一般的提交不成功的提示呢,就马上将浏览器关闭了。(我仔细回想了一下,前些天是出现了一条和大多情况都不一样的提示。)所以,尤其是在网路不通畅的时候,发布完一些文章之后,要注意查看一下各个栏目是否都已经正确生成了页面。有时候,你看到栏目列表里虽然有文章的标题,但是点击却找不到网页。如果只是未生成的问题,可以在后台所属栏目里看到的,ID号显示为加粗了,点击它就会刷新生成出来了。
 
重点需要检查的数据表,举例如下:
 
一般下面这六个表不用仔细看
 
ecms_health_check_1
ecms_health_check_data_1
ecms_health_doc_1
ecms_health_doc_data_1
ecms_health_doc_index_1
 
重点需要检查的数据表是下面三个
 
ecms_health_data_1 无记录
ecms_health_1 无记录
ecms_health_index_1 有记录
 
做网站对于人生的启示
 
做一件事情,如果你相信是这样的、能够做到的,与如果你不太确信是这样的,不能够肯定自己能否做到,那么,做这件事情的效果和结果是不一样的。这就是我从解决这次网站问题的经历中得到的启示。
 
回顾一下事情的整个过程,我发现,其实,当在总体刷新内容页的时候,是停止在刷新到2100的时候报告错误,这个时候,我就考虑到,应该是2100之后的内容页有问题,也把至少2100-2200做为重点部分来检查,然而,三个重点数据表都检查了几遍,却没有发现问题,这是因为,在检查的时候,我也没有在意识上“确信”问题就是出在这里,由于这个意识的主导,让我自然而然地不那么仔细了。
 
在通过逐步限定故障范围,将问题范围压缩至才17篇文档的时候,从这里发现有2102,2104,2105,2106却没有2103,于是,这让我此时非常怀疑和确信,问题应该就是出在这里,在这个意识的主导下,我又去检查三个重点数据表,一上来就看到了,在自然的ID排序中,ecms_health_index 有2103的记录,而另外两个重点数据表却没有2103的记录,问题就此解决了。
 
附:下面是我从网上找到的一篇文章,我就是根据作者的思想方法,最终解决了问题的,特致谢意,并一同贴出来供大家参考学习。
 
很多朋友估计一辈子都没遇到更新文章后,数据没写入,后台没文章,却帝国cms后台刷新提示.phome_ecms_news_data_' doesn't exist解决方法,可参考本文。
 
问题:刷新所有信息内容页面时--提示 Table '*.phome_ecms_article_data_' doesn't exist ,进行不下去了!
 
1、原因--是数据本身有问题,信息索引表phome_ecms_表名_index有不存在ID的记录。解决办法:进数据库删除索引表中不存在的ID记录即可解决。
 
2、解决--怎么知道那些是不存在的ID记录呢?
 
例如 phome_ecms_article 表的 phome_ecms_article_index 有多出的id记录,这是刷新所有信息时就有上述错误。
 
这时我们可以进入phpmyadmin,在数据库运行SELECT id FROM phome_ecms_news_index WHERE NOT EXISTS (SELECT null FROM phome_ecms_news WHERE phome_ecms_news.id = phome_ecms_news_index.id);将找到的id记录删除就行了,一般不会很多。然后在检查ecms_news_data以及ecms_news_index等ID的值是否与ecms_news中的FILENAME值一致,可确保您解决相关的问题。
 
文章来源:shenghuobaodian.com

从手机浏览器访问《生活宝典》

站内搜索
  • 帝国CMS数据库数据表各字段注释
  • 微商帮
    世界网站大全
    中国科研团队:大象的长鼻子是如何越变越长了
    中国科研团队:大象的长
    自己是否能够像自己想的那样做成一件事,身旁人的判断会比自己准确
    自己是否能够像自己想
    火宫殿:吃喝玩乐看,烧香拜神佛,红火的庙会经济
    火宫殿:吃喝玩乐看,烧香
    眼见为实也不为实,更须谨慎看到的并非全貌
    眼见为实也不为实,更须