2015-01-16 87 views
0

我運行一個高效應用程序來管理我們研究組的出版物。該應用程序是在perl中用mojolicious框架編寫的。我使用sqlite3作爲數據庫,Hypnotoad作爲應用服務器。與DB偶爾崩潰的Mojolicious連接

我的問題是,連接到數據庫偶爾會崩潰(每週2次),而沒有提供合理的錯誤消息。唯一有幫助的是重新啓動Hypnotoad。任何想法爲什麼這可能發生?一個錯誤消息的

實施例:

[Fri Jan 16 08:43:09 2015] [error] Can't call method "execute" on an undefined value at /home/piotr/perl/publiste2/script/../lib/AdminApi/Core.pm line 525. 

的代碼有如下所示:

DBI->connect('dbi:SQLite:dbname='.$config->{normal_db}, '', '') or die $DBI::errstr .". File is: ".$config->{normal_db}; 

完整代碼是可用的:

my $qry = "SELECT DISTINCT our_type FROM OurType_to_Type WHERE landing=1 ORDER BY our_type ASC"; 
my $sth = $dbh->prepare($qry); 
$sth->execute(); # this is the line 525 

胸徑變量由助手返回這裏:https://bitbucket.org/vikin9/hex64publicationlistmanager/src

回答

0

此錯誤一個月出現兩次保存。這很煩人,我已經重寫了應用程序以使用MySQL和適當的DBI MySQL連接器。從那時起,沒有更多的崩潰。

1

$ dbh-> prepare返回一個未定義的值。這可能有幾個原因。嘗試類似這樣的:

$sth = $dbh->prepare($qry) or die $dbh->errstr; 
+0

我會試試這個,並等待下一次崩潰,看看錯誤消息說什麼。 – Piotr

+0

我檢查了它,$ dbh-> errstr是空的。 – Piotr

0

我知道已經有一段時間了,也許你已經想通了,但我想我會試試看。

如果您在使用hypnotoad運行它,還有如果你preforking之前創建的處理程序是一個衆所周知的問題:Database connection problem in preforking

希望它可以幫助

+0

感謝您的提示!我會試一試。我的問題仍然沒有解決 – Piotr