尝试使用时DBIx :: Class未定义的值异常 - > create()

时间:2011-06-13 20:46:21

标签: perl model-view-controller catalyst dbix-class

我正在尝试使用Catalyst中的DBIx :: Class创建一个新行,代码如下:

$c->model('Session')->resultset('UserPreference')->create(
                {
                 appname => 'rss_reader',
                 username => $username,
                 data => $data,
                },
               );

但是,我每次都会遇到这个错误:

Caught exception in App::Controller::rss->dbo "Can't call method "resolve" on an undefined value at /etg/source/Linux/pkg/perl-5.8.8/lib/site_perl/5.8.8/DBIx/Class/Row.pm line 1309."

我看到一些邮件列表谈论这个错误,当查询因任何原因(perms,约束等)失败时被抛出为错误的一揽子错误,但它看起来很好甚至运行DBIC_TRACE = 1,I甚至不在我的控制台中看到生成的查询。

我应该提到我不认为权限等方面存在问题。因为手动使用数据库句柄有效:

my $stm=$c->model("Session")->storage->dbh->prepare("insert into user_preferences (username,appname,data) values ('mphillip','rss_reader','cookies')"); $stm->execute(); 

1 个答案:

答案 0 :(得分:1)

您是否尝试过update_or_create代替create?如果存在行create将失败。