今天升級以后的帝國cms7.0在生成頁面時出現(xiàn)了奇怪的錯誤
Table ‘表前綴_ecms_news_data_’ doesn't exist...
很明顯這是提示表不存在,但是這個表名是錯誤的,他缺少了_1,正確的表名應(yīng)是 表前綴_ecms_data_1 這樣的
后面的_1是根據(jù)主表里的stb字段來設(shè)定的,看了主表phome_ecms_news 里的記錄他的stb字段都是為1是正常的
但是發(fā)現(xiàn)主表里并沒有出現(xiàn)這個錯誤的ID存在,我的情況是ID為118,但是主表里沒有118這個ID了
后來發(fā)現(xiàn)帝國cms7.0的生成機制應(yīng)該先讀取phome_ecms_news_index這樣的索引表,因為這個表里還存在118這個ID
主表里不存在自然就讀取不到stb字段的內(nèi)容也就會出現(xiàn)前文所說的問題了
怎么解決呢
看了帝國cms7.0的數(shù)據(jù)更新最下面有個【清理多余數(shù)據(jù)】的功能
看圖示里提示 “Table '*.phome_ecms_' doesn't exist......update ***_ecms_ set havehtml=1 where id='' limit 1”
看來帝國cms官方也預(yù)料到可能會出現(xiàn)這樣的情況吧
于是就清理了一遍,結(jié)果總是不那么順利,沒有起到作用...
我們已經(jīng)知道的故障原因,還是自己解決吧,解決辦法就是清理掉索引表里多余的信息
我用一個sql來解決
delete from `phome_ecms_news_index` where id not in(select id from phome_ecms_news)
帝國cms后臺執(zhí)行一下這個sql語句
再去生成,搞定了。