Ok, I made that change and am now getting this error: DBIx::Class::Schema::resultset(): Can't find source for Master at test9.pl line 28
Which seems to indicate that the load_classes() may not be working correctly. Since when I do this: __PACKAGE__->load_classes('Master"); I get this error: Can't locate object method "source_name" via package "Test::Schema::Master" at /wise/lib/perl5/DBIx/Class/Schema.pm line 280. And for the question of why I used "analog.master" instead of "Master", well straight DBI uses that syntax and Class::DBI didn't complain when I used that syntax. So, just a newbie mistake. -----Original Message----- From: John Napiorkowski [mailto:[EMAIL PROTECTED] Sent: Thursday, December 28, 2006 1:15 PM To: dbix-class@lists.rawmode.org Subject: Re: [Dbix-class] A problem with Postgres schemas --- Kevin Esteb <[EMAIL PROTECTED]> wrote: > I new to DBIx::Class, so please bear with me. > > I am running RHEL4 and have a postgres database with a schema named > "analog". The DBIx::Class modules are the latest and greatest from > CPAN, so is the DBD and the DBI for postgres. When I run the below > code, I get this error: > > DBIx::Class::Schema::resultset(): Can't find source for analog.master > at test9.pl line 28 > > What is the proper way to access another database schema within > postgres. > > Thanks > > > package Test::Schema; > use base qw/ DBIx::Class::Schema /; > > __PACKAGE__->load_classes(); > > 1; > > package Test::Schema::Master; > use base qw/ DBIx::Class /; > > __PACKAGE__->load_components(qw/ PK::Auto Core /); > __PACKAGE__->table('analog.master'); > __PACKAGE__->add_columns(qw/ hostname datetime did /); > __PACKAGE__->set_primary_key('hostname'); > > 1; > > package Test; > > my $dsn = 'dbi:Pg:dbname=monitor'; > my $username = 'postgres'; > my $password = ''; > my $params = {RaiseError => 1, AutoCommit => 0}; > > eval { > > my $schema = Test::Schema->connect($dsn, $username, $password, > $params); > my @masters = > $schema->resultset('analog.master')->search(); > > foreach my $master (@masters) { > > print "$master->hostname, > $master->datetime, $master->did\n"; > > } > > }; if ($@) { print "[EMAIL PROTECTED]"; } > > 1; I also use Postgres with schemas; if your schema name is not the default schema you need to use: __PACKAGE__->table('analog.master'); which you did, but you don't do 'schema.table' for the resultset: $schema->resultset('analog.master')->search() because the resultset is based on the class: package Test::Schema::Master; Try: $schema->resultset('Master')->search(); and if everything else is right it should work. If not let me know, I can share with you my setup. Actually it's just convention to have the Schema name and the table name the same, you could do otherwise from what I understand (although I haven't tried it :) --John > > _______________________________________________ > List: > http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class > Wiki: http://dbix-class.shadowcatsystems.co.uk/ > IRC: irc.perl.org#dbix-class > SVN: > http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/ > Searchable Archive: > http://www.mail-archive.com/dbix-class@lists.rawmode.org/ > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________ List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class Wiki: http://dbix-class.shadowcatsystems.co.uk/ IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/ Searchable Archive: http://www.mail-archive.com/dbix-class@lists.rawmode.org/ _______________________________________________ List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class Wiki: http://dbix-class.shadowcatsystems.co.uk/ IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/ Searchable Archive: http://www.mail-archive.com/dbix-class@lists.rawmode.org/