DBIx :: Class неопределённое значение исключение при попытке использовать -> create () - PullRequest
2 голосов
/ 14 июня 2011

Я пытаюсь создать новую строку, используя DBIx :: Class из Catalyst, со следующим кодом:

$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, я даже не вижу сгенерированный запрос в моей консоли.

Я должен упомянуть, что не думаю, что с разрешениями что-то плохое и т. Д. так как использование дескриптора базы данных работает вручную:

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

1 Ответ

1 голос
/ 08 августа 2011

Вы пробовали update_or_create вместо create?Если строка существует, create потерпит неудачу.

...