[Catalyst-de] Problem mit Datenbank-Anbindung

mailinglisten at renee-baecker.de mailinglisten at renee-baecker.de
Sun Mar 11 18:13:18 GMT 2007


Jetzt habe ich mich endlich mal durchgerungen, etwas mit Catalyst
herumzuspielen und schon tauchen Probleme auf ;-)

Ich möchte eine SQLite-DB einbinden. Wenn ich ein Testskript auf
Kommandozeile laufen lasse, dann funktioniert alles wunderbar, aber
wehe, ich möchte da was in Catalyst machen.

Mein Testskript:

#!/usr/bin/perl

use strict;
use warnings;
use PerlFAQ::Model::Database;

my $path = 'C:\PerlFAQ\root';

my $schema =
PerlFAQ::Model::Database->connect('DBI:SQLite:'.$path.'\perlfaq.db');
my @cats   = $schema->resultset('Kategorie')->all;

for my $cat(@cats){
	print $cat->Cat_ID," -- ",$cat->Cat_Name,"\n";
}


Meine drei "Hauptklassen":

Database.pm

package PerlFAQ::Model::Database;

use base 'DBIx::Class::Schema';

__PACKAGE__->load_classes(qw/Faq Kategorie/);

1;

Faq.pm

package PerlFAQ::Model::Database::Faq;

use strict;
use warnings;
use base qw(DBIx::Class);

__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('Faq');
__PACKAGE__->add_columns(qw/Faq_ID Frage Antwort Kategorie_ID/);
__PACKAGE__->set_primary_key('Faq_ID');
__PACKAGE__->belongs_to('Kategorie_ID' =>
'PerlFAQ::Model::Database::Kategorie');

1;

package PerlFAQ::Model::Database::Kategorie;

use strict;
use warnings;
use base qw(DBIx::Class);

__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('Kategorie');
__PACKAGE__->add_columns(Kategorie_ID   => {accessor => 'Cat_ID'},
                         Kategorie_Name => {accessor => 'Cat_Name'});
__PACKAGE__->set_primary_key('Kategorie_ID');
__PACKAGE__->has_many(Faq => 'PerlFAQ::Model::Database::Faq',
                  { 'foreign.Kategorie_ID' => 'self.Kategorie_ID' });

1;


Meine Model-Klasse in Catalyst:

package PerlFAQ::Model::Model;

use base qw/Catalyst::Model::DBIC::Schema/;

__PACKAGE__->config(
    schema_class => 'PerlFAQ::Model::Database',
    connect_info => [
        'DBI:SQLite:C:\PerlFAQ\root\perlfaq.db',
    ],
);

1;

Und noch die Klasse, die eigentlich etwas ausgeben soll:

package PerlFAQ::Controller::FAQ;

use strict;
use warnings;
use base 'Catalyst::Controller';

use Data::Dumper;

use FindBin;

# zeige alle Kategorien an
sub index : Private{
    my ( $self, $c ) = @_;
       
$c->response->body(Dumper($c->model->resultset('Kategorie')->all));
}

Ich bekomme aber immer nur:

Caught exception in PerlFAQ::Controller::FAQ->index "Can't call method
"select" on an undefined value at
C:/usr/site/lib/DBIx/Class/ResultSet.pm line 462."

Hat einer von euch ne Ahnung, was ich da falsch mache??

Viele Grüße,
Renée
---

$foo - Perl-Magazin -> http://www.foo-magazin.de

9. Deutscher Perl-Workshop 21.-23.02.2007 in München
Mehr Infos unter http://www.perl-workshop.de/de/2007/






More information about the Catalyst-de mailing list