主題: blog移機後發表新文章的錯誤訊息 作者: ted 於 十月 02, 2006, 01:36:07 下午 前幾天將在 A 機器上的 LT 1.0.6 移到 B機器上後,發現在發表文章後會出現下面的錯誤訊息
Fatal error: Uncaught exception 'Exception' with message 'BayesianTokens::updateOccurrencesFromTokensArray: Cannot update occurrences of token 'Redingè'.' in D:\AppServ\www\blog\class\dao\bayesiantokens.class.php:194 Stack trace: #0 D:\AppServ\www\blog\class\dao\bayesiantokens.class.php(164): BayesianTokens->updateOccurrencesFromTokensArray('1', Array, 0, 1, '0', 369) #1 D:\AppServ\www\blog\class\bayesian\bayesianfiltercore.class.php(87): BayesianTokens->incNonSpamOccurrencesFromTokensArray('1', Array, '0', 369) #2 D:\AppServ\www\blog\class\bayesian\bayesianfiltercore.class.php(108): BayesianFilterCore->train('1', '???????????????...', '<p>????????????...', '', '', '', false) #3 D:\AppServ\www\blog\class\action\admin\adminaddpostaction.class.php(122): BayesianFilterCore->trainWithArticle(Object(Article)) #4 D:\AppServ\www\blog\class\controller\controller.class.php(309): AdminAddPostAction->perform() #5 D:\AppServ\www\blog\admin.php(39): Controller->process(Array, 'op') #6 {main} thrown in D:\AppServ\www\blog\class\dao\bayesiantokens.class.php on line 194 查看後發現文章是在存成功,RSS reader也收的到此篇新文章 但 blog 首頁卻不會出現,但從文章分類或搜尋都可以找的到 當再次編輯此文章,再存檔;或者先存成草稿,然後再發表 就會正常,沒有錯誤 我移機的大致作法是:先在B 機器裝上一樣版本的 LT,然後把 A機器上的 plugin,template,及 mysql的 data檔案 copy 至B 機器 雖然A,B二台的 php 及 mysql, apache版本不同,但我都把my.ini 或 php.ini及 apache 的設定盡量調成一致 新的B機器 ----------------------------------------- Windows server 2003 Apache Web Server Version 2.2.2 PHP Script Language Version 5.1.4 MySQL Database Version 5.0.22 舊的 A機器 ------------------------------------- Windows 2000 server Apache Web Server Version 2.0.54 PHP Script Language Version 5.0.4 MySQL Database Version 4.1.12a 請問可能是那邊造成的問題,或者我copy 錯了什麼檔案? 謝謝 主題: Re: blog移機後發表新文章的錯誤訊息 作者: eppies 於 十月 03, 2006, 12:33:38 上午 我的blog昨天開始也出現這問題
po了新文章後 就出現 Exception message: BayesianTokens::updateOccurrencesFromTokensArray: Cannot update occurrences of token 'Topic#tes'. Error code: 0 -- Backtrace -- /var/www/vhosts/apple.pro/httpdocs/class/dao/bayesiantokens.class.php(194): throw /var/www/vhosts/apple.pro/httpdocs/class/dao/bayesiantokens.class.php(164): bayesiantokens.updateoccurrencesfromtokensarray /var/www/vhosts/apple.pro/httpdocs/class/bayesian/bayesianfiltercore.class.php(87): bayesiantokens.incnonspamoccurrencesfromtokensarray /var/www/vhosts/apple.pro/httpdocs/class/bayesian/bayesianfiltercore.class.php(108): bayesianfiltercore.train /var/www/vhosts/apple.pro/httpdocs/class/action/admin/adminaddpostaction.class.php(122): bayesianfiltercore.trainwitharticle /var/www/vhosts/apple.pro/httpdocs/class/controller/controller.class.php(309): adminaddpostaction.perform /var/www/vhosts/apple.pro/httpdocs/admin.php(39): admincontroller.process 但在首頁跟文章又會正常出現 昨天開始之前所有的正常回應都不見了 也無法在blog上回應 回應的話 會出現 Exception message: BayesianTokens::updateOccurrencesFromTokensArray: Cannot update occurrences of token 'asfasdf'. Error code: 0 -- Backtrace -- /var/www/vhosts/apple.pro/httpdocs/class/dao/bayesiantokens.class.php(194): throw /var/www/vhosts/apple.pro/httpdocs/class/dao/bayesiantokens.class.php(164): bayesiantokens.updateoccurrencesfromtokensarray /var/www/vhosts/apple.pro/httpdocs/class/bayesian/bayesianfiltercore.class.php(87): bayesiantokens.incnonspamoccurrencesfromtokensarray /var/www/vhosts/apple.pro/httpdocs/class/security/bayesianfilter.class.php(113): bayesianfiltercore.train /var/www/vhosts/apple.pro/httpdocs/class/security/pipeline.class.php(172): bayesianfilter.filter /var/www/vhosts/apple.pro/httpdocs/class/action/blogaction.class.php(70): pipeline.process /var/www/vhosts/apple.pro/httpdocs/class/action/addcommentaction.class.php(46): addcommentaction.blogaction /var/www/vhosts/apple.pro/httpdocs/class/controller/controller.class.php(303): addcommentaction.addcommentaction /var/www/vhosts/apple.pro/httpdocs/index.php(42): blogcontroller.process 登入admin後 原本會出現的最新回應跟右邊文章總數、回應、瀏覽次數統計全部不見了 我的blog目前有七百多個會員 每個blog都有這問題 從今年一月開站都沒出現過這類問題 希望站上大大能給小弟一點建議 看看到底哪邊出了問題 不勝感激 主題: Re: blog移機後發表新文章的錯誤訊息 作者: eppies 於 十月 04, 2006, 09:30:20 上午 哎~
剛剛去英文官網論壇上找 似乎也找不到解決的方法 :-( 主題: Re: blog移機後發表新文章的錯誤訊息 作者: markwu 於 十月 04, 2006, 10:34:39 上午 把 ./tmp 下的 sql_error.log 貼上來,看起來是寫入資料庫時發生錯誤。
Mark 主題: Re: blog移機後發表新文章的錯誤訊息 作者: eppies 於 十月 04, 2006, 11:14:58 上午 謝謝Mark的回應
不過...sql_error.log 竟然有1.36GB :-| 看來是貼不上來了 :'( 再請問一下mark 那這個過度肥大的log檔 可以del嗎 我的主機是放在godaddy 也不過租10G 這log檔就1G多 很想把它del掉... 主題: Re: blog移機後發表新文章的錯誤訊息 作者: ted 於 十月 04, 2006, 11:15:59 上午 我的 sql_error.log 內容見附件,
有一些訊息是 Data too long for column 'text' at row 1 是文章太長的關係嗎? 我沒有去變更過MySQL 的資料庫欄位呀 因錯誤訊息很長, 我附上檔案, 以方便各位查看 煩請幫忙看看,謝謝 ted 主題: Re: blog移機後發表新文章的錯誤訊息 作者: panying 於 十月 04, 2006, 01:14:19 下午 INSERT INTO plog_bayesian_tokens (blog_id, token, spam_occurrences, nonspam_occurrences, prob) VALUES ('2', 'URL?, '0', '1', '0.01')
这个插入数据是乱码... :-| 主題: Re: blog移機後發表新文章的錯誤訊息 作者: panying 於 十月 04, 2006, 01:22:15 下午 基于你使用的是Mysql5的版本,建议将MySql5的Strict Mode参数移去,说不定能达到效果..
主題: Re: blog移機後發表新文章的錯誤訊息 作者: ted 於 十月 11, 2006, 11:50:58 上午 如果以 utf-8 的編碼來看 err log 的話, 倒沒有亂碼的問題
02-10-2006 02:23:55 ERROR - The following query = INSERT INTO plog_bayesian_tokens (blog_id, token, spam_occurrences, nonspam_occurrences, prob) VALUES ('2', 'URL', '0', '1', '0.01') generated the following error message = Data too long for column 'token' at row 1 出現 token 的值太長,超過 plog_bayesian_tokens 裏 token 這毎欄位的長度, 但以此例來看, 'URL' 跟本沒有超過 token var(100) 的長度? 目前在新增10篇文章,但概有8成會有此問題 我只好暫時把 blog\class\dao 下的 bayesiantokens.class.php 中的 第 192行起的幾行先給 mark 起來 至少這樣不會再有此情形,且程式可以繼續下去, 才不會文章進去了,但 blog 首頁却沒出現 if (!$result) { throw(new Exception("BayesianTokens::updateOccurrencesFromTokensArray: Cannot update occurrences of token '$token'.")); die(); } 只是不曉得這樣改會不會有其他的影響就是了 主題: Re: blog移機後發表新文章的錯誤訊息 作者: panying 於 十月 29, 2006, 09:11:48 下午 直接看16进制代码的话,可以看见
插入的'URL'其实是 27 55 52 4C E8 27,嗯,当然在我这里显示就是'URL? 应该是mysql 认为E8在SQL里是一个非法字符吧,所以报错了? 主題: Re: blog移機後發表新文章的錯誤訊息 作者: mouson 於 五月 08, 2007, 12:23:59 上午 不好意思! 我再次的發生類似的事情!
我的sql_error.log的內容如下 程式碼: D:\wwwroot\BlogWebSite\class\logger\logger\logger.class.php(157): PatternLayout.format 只要是發表中文的文章就會發生上述的狀況 不知道是什麼原因! 照著ted 所說的方法的確可以避免 但看樣子似乎治標不治本,不知道大家如何解學上述的問題呢? 主題: Re: blog移機後發表新文章的錯誤訊息 作者: ted 於 五月 08, 2007, 12:38:49 下午 今天在另一台測試的機器上發現,
如果我沒有把下面這段給 mark 掉,當迴響中有全型的文字時 (如< 或[ ...) ,也會有一樣的錯誤 if (!$result) { throw(new Exception("BayesianTokens::updateOccurrencesFromTokensArray: Cannot update occurrences of token '$token'.")); die(); } 主題: Re: blog移機後發表新文章的錯誤訊息 作者: markwu 於 七月 02, 2007, 10:35:49 上午 其實不是這個原因,因為 Baysian 對中文切字的問題,是本來就有的。因為他是以 stop words 切字。
這個問題的原因是 mysql5 的 strict mode,造成在insert 切完後的結果到資料欄位時發生錯誤。 我建議先將 mysql5 的 strict mode 拿掉。 Mark 主題: Re: blog移機後發表新文章的錯誤訊息 作者: mouson 於 十月 23, 2007, 11:33:15 上午 mark您好
跟您請教一個問題 您所說的拿掉mysql5的strict mode 是不是就像以下操作一下 把my.ini中的sql-mode裡的STRICT_TRANS_TABLES去除就可以了呢? #sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 還是一定要透過mysql的MySQL Server Instance Config Wizard ? 會再次的這樣問 主要是因為日前已經將bayesiantokenizer.class.php第六行的stop words回復到原本的狀態 並且如我上述的修改sql-mode 結果在發表文章的時候 依然會出現如下的錯誤訊息。 程式碼: Fatal error: 不好意思 要再麻煩您!! 主題: Re: blog移機後發表新文章的錯誤訊息 作者: markwu 於 十一月 02, 2007, 02:43:16 下午 ㄟ,怪了,我記得這個 bug 我已經修復了,可以請問你是用那一版的 LifeType嗎?
Mark 主題: Re: blog移機後發表新文章的錯誤訊息 作者: mouson 於 十一月 02, 2007, 03:02:16 下午 從version.php得知,我目前使用的是"lifetype-1.2.4_r5688"
如果是已經修復的bug 可否麻煩mark提供給我 這個bug在哪些檔案中有修改的動作 我再透過查證這些檔案,驗證是否是不是我升級上的錯誤呢? BTW 透過lifetype本身提供的版本檢察,目前我與1.2.4版本的差異如下 class/bayesian/bayesiantokenizer.class.php templates/summary/agreement.template templates/summary/footer.template templates/summary/header.template templates/summary/index.template templates/summary/post.template templates/default/commentform.template 其中bayesiantokenizer.class.php有修改的部分 也就是我所說的第六行的部分 希望以上的資訊可以幫上忙。 再次感謝! 主題: Re: blog移机后发表新文章的错误讯息 作者: robin 於 十一月 05, 2007, 09:15:11 下午 在把博客搬到MYSQL高于5.0.17的地方,也遇到这个问题。有时候会报如下的错误:
----------------------------------- <br /> <b>Fatal error</b>: Uncaught exception 'Exception' with message 'BayesianTokens::updateOccurrencesFromTokensArray: Cannot update occurrences of token 'Ronald?.' in ***********\class\dao\bayesiantokens.class.php:197 Stack trace: #0 ***********\class\dao\bayesiantokens.class.php(167): BayesianTokens->updateOccurrencesFromTokensArray('5', Array, 0, 1, '0', 1) #1 ***********\class\bayesian\bayesianfiltercore.class.php(87): BayesianTokens->incNonSpamOccurrencesFromTokensArray('5', Array, '0', 1) #2 ***********\class\bayesian\bayesianfiltercore.class.php(108): BayesianFilterCore->train('5', 'Ronald', '<p>????????????...', '', '', '', false) ------------------------------------------ 但是有些时候又可以正常发表成功,有时候又长时间未响应,最后出现找不到页面。问了服务器供应商,那边也给出不什么建议。现在只知道他们数据库加了严格检查模式。 不知道去掉这个模式是否真的效了,请有空的大哥指明一下,谢谢! 主題: Re: blog移機後發表新文章的錯誤訊息 作者: markwu 於 十一月 06, 2007, 03:38:35 下午 你們是哪一篇迴響會發生這個問題,可以把他貼上來,讓我試試看嗎?
Mark 主題: Re: blog移机后发表新文章的错误讯息 作者: robin 於 十一月 06, 2007, 10:25:56 下午 谢谢MARK的回复!
我是以后台更新文章的时候,出现这个的情况。经过我的多次努力。现在服务器已经把SQL_Mode,我下日志文件看了下,只有几个。现在在上传同样的文章时,已经不在报错。但是有另一个问题,却一直困扰着我。 就是,就是有时候在发表文章时,会出现被卡住的情况。而且一卡住了,会导致打开整个网站都变得很慢,不过如果用IE被卡住了,用FF就可以正常访问,服务器环境是:IIS6.0+PHP5.17+MYSQL5.0.24。已经被这个问题困扰了一天了。 开始以为是模版设置的问题,但是本机发表是正常的[不过我本机是APACHE的。]。后来一步一步测试发现,好像不能给文章加字体颜色,一加就会被卡死,半天不动,直到最后超时说找不到页面。但是有些电脑又可以正常发表现,而且很快。 因为我自己汉化过编辑器,不知道会是这个问题。正打算在原版上测试这个问题。 我的回复功能,一直是好的。最后谢谢MARKWU。 主題: Re: blog移機後發表新文章的錯誤訊息 作者: mouson 於 十一月 07, 2007, 01:42:38 下午 你們是哪一篇迴響會發生這個問題,可以把他貼上來,讓我試試看嗎? Mark 感謝Mark的協助! 目前把相關的設定改回設定為非strict mode 且bayesiantokenizer.class.php第六行的stop words回復到原本的狀態 在自己的測試站台上連續複製幾篇已經貼出來的文章測試 還沒有測到同樣的狀況 我在測試一陣子 如果有在發生,會再次回來回報 感謝mark |