POST TIME:2020-04-12 21:57
今天我因?yàn)橐恍┬枰薷牧薲ede網(wǎng)站數(shù)據(jù)庫(kù)的表前綴,并將數(shù)據(jù)庫(kù)配置信息文件中表前綴同樣改了,然后在編輯發(fā)布的文檔時(shí)出現(xiàn)了"讀取附加信息出錯(cuò)!"的消息,同添加文檔也同樣出錯(cuò),出現(xiàn)了"把數(shù)據(jù)保存到數(shù)據(jù)庫(kù)附加表`dede_addonarticle`時(shí)出錯(cuò),請(qǐng)把相關(guān)信息提交給DedeCms官方。"的信息,此時(shí)重新生成html文件時(shí)原來(lái)的文檔也不見(jiàn)了。
于是我用代碼編輯器搜索了一下"讀取附加信息出錯(cuò)!"所在的文件,結(jié)果發(fā)現(xiàn)這段信息是在admin/article_edit.php中,而它出現(xiàn)的條件是數(shù)組$addRow不存在,即上面sql語(yǔ)句"SELECT*FROM`$addtable`WHEREaid='$aid'"返回結(jié)果為0,同過(guò)這sql語(yǔ)句可以看出當(dāng)表名$addtable出錯(cuò)時(shí),或文檔aid不存在時(shí)就會(huì)出現(xiàn)問(wèn)題,而$addtable=$cInfos['addtable'],$cInfos又是通過(guò)"SELECT*FROM`dede_channeltype`WHEREid='".$arcRow['channel']."'"得來(lái),我們就可以看出表名$addtable是存在表dede_channeltype中的addtable字段里的(其中dede_是表前綴),而不是用類似于dede_channeltype的表前綴加表名的方式獲得的,結(jié)果我去數(shù)據(jù)庫(kù)的dede_channeltype表中一看,發(fā)現(xiàn)里面是內(nèi)容模型的信息,而里面存的表名的前綴還是原來(lái)的,于是我將里面的表名改正,再去后臺(tái)看,錯(cuò)誤就沒(méi)了。
總結(jié):出現(xiàn)這個(gè)錯(cuò)誤就是因?yàn)閿?shù)據(jù)庫(kù)表名與dede_channeltype中存的表名對(duì)不上,能操作數(shù)據(jù)庫(kù)的人可以去數(shù)據(jù)庫(kù)修改,不會(huì)操作數(shù)據(jù)庫(kù)的人可以在核心--頻道模型--內(nèi)容模型管理--將模型‘附加表’改正確即可。
附:我在查看dede_channeltype表時(shí)發(fā)現(xiàn)字段maintable中也存著表名,能改數(shù)據(jù)庫(kù)的人最好把里面的表前綴也改過(guò)來(lái),雖然說(shuō)只要改掉addtable字段就能解決錯(cuò) 了誤。
最簡(jiǎn)單方法是使用系統(tǒng)里的系統(tǒng)錯(cuò)誤修復(fù),一般都能解決