LifeType 中文開發論壇

支援 => 安裝與設定 => 主題作者是: ted 於 十月 02, 2006, 01:36:07 下午



主題: 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
D:\wwwroot\BlogWebSite\class\logger\logger\logger.class.php(137): Logger.log
D:\wwwroot\BlogWebSite\class\dao\model.class.php(142): Logger.error
D:\wwwroot\BlogWebSite\class\dao\bayesiantokens.class.php(306): Model.Execute
D:\wwwroot\BlogWebSite\class\dao\bayesiantokens.class.php(262): BayesianTokens.insert
D:\wwwroot\BlogWebSite\class\dao\bayesiantokens.class.php(193): BayesianTokens.updateOccurrences
D:\wwwroot\BlogWebSite\class\dao\bayesiantokens.class.php(167): BayesianTokens.updateOccurrencesFromTokensArray
D:\wwwroot\BlogWebSite\class\bayesian\bayesianfiltercore.class.php(87): BayesianTokens.incNonSpamOccurrencesFromTokensArray
D:\wwwroot\BlogWebSite\class\bayesian\bayesianfiltercore.class.php(108): BayesianFilterCore.train
D:\wwwroot\BlogWebSite\class\action\admin\adminaddpostaction.class.php(157): BayesianFilterCore.trainWithArticle
D:\wwwroot\BlogWebSite\class\controller\controller.class.php(347): AdminAddPostAction.perform
D:\wwwroot\BlogWebSite\admin.php(43): Controller.process

 08-05-2007 01:21:38 ERROR - The following query =
INSERT INTO lt_bayesian_tokens (blog_id, token, spam_occurrences, nonspam_occurrences, prob) VALUES ('2', '20?, '0', '1', '0.01')generated the following error message =
Data too long for column 'token' at row 1

只要是發表中文的文章就會發生上述的狀況
不知道是什麼原因!
照著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: 
Uncaught exception 'Exception' with message 'BayesianTokens::updateOccurrencesFromTokensArray: Cannot update occurrences of token '!!?.' in D:\wwwroot\BetaWebSite\class\dao\bayesiantokens.class.php:197 Stack trace: #0
D:\wwwroot\BetaWebSite\class\dao\bayesiantokens.class.php(167): BayesianTokens->updateOccurrencesFromTokensArray('3', Array, 0, 1, '3', 32) #1
D:\wwwroot\BetaWebSite\class\bayesian\bayesianfiltercore.class.php(87): BayesianTokens->incNonSpamOccurrencesFromTokensArray('3', Array, '3', 32) #2
D:\wwwroot\BetaWebSite\class\bayesian\bayesianfiltercore.class.php(108): BayesianFilterCore->train('3', '??????strict mo...', '<p>????????????...', '', '', '', false) #3
D:\wwwroot\BetaWebSite\class\action\admin\adminaddpostaction.class.php(158): BayesianFilterCore->trainWithArticle(Object(Article)) #4
D:\wwwroot\BetaWebSite\class\controller\controller.class.php(347): AdminAddPostAction->perform() #5
D:\wwwroot\BetaWebSite\admin.php(43): Controller->process(Array) #6
{main} thrown in D:\wwwroot\BetaWebSite\class\dao\bayesiantokens.class.php on line 197


不好意思 要再麻煩您!!


主題: 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-&gt;updateOccurrencesFromTokensArray('5', Array, 0, 1, '0', 1)
#1 ***********\class\bayesian\bayesianfiltercore.class.php(87): BayesianTokens-&gt;incNonSpamOccurrencesFromTokensArray('5', Array, '0', 1)
#2 ***********\class\bayesian\bayesianfiltercore.class.php(108): BayesianFilterCore-&gt;train('5', 'Ronald', '&lt;p&gt;????????????...', '', '', '', 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