与数据库的 Mojolicious 连接偶尔会崩溃

Mojolicious connection to DB occasionally crashes

我 运行 一个高效的应用程序来管理我们研究小组的出版物。该应用程序是用 perl 中的 mojolicious 框架编写的。我使用 sqlite3 作为数据库,使用 Hypnotoad 作为应用服务器。

我的问题是与数据库的连接偶尔会崩溃(每周 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.

那里的代码如下所示:

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

dbh 变量由 helper 返回:

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

此处提供完整代码:https://bitbucket.org/vikin9/hex64publicationlistmanager/src

$dbh->准备 returns 一个未定义的值。这可能有几个原因。尝试与此类似的操作:

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

我知道这已经有一段时间了,也许你已经想通了,但我想我会试一试。

如果您 运行 使用 hypnotoad,如果您在预分叉之前创建处理程序,则会出现一个已知问题:Database connection problem in preforking

希望对您有所帮助

这个错误一个月出现两次。太烦人了,我重写了应用程序以使用 MySQL 和正确的 DBI MySQL 连接器。从那以后,再也没有崩溃了。