[Pdx-pm] DBIC "Can't find source" error

Joshua Keroes joshua at keroes.com
Wed Apr 21 16:36:17 PDT 2010


I'm trying to put last week's DBIC lecture to use and have most of the
obvious stuff done. I'm getting hung up by the error message:
"DBIx::Class::Schema::resultset(): Can't find source for Interface at ...".
For the record, dbicadmin will generate the same error message (but still
generate SQL.)

There are two tables: ECCKT and interface. An ECCKT is a circuit ID. Each
ECCKT can have many interfaces.

I'm not finding much about fixing this particular error and the DBIC source
code is a little dry for me to see how it relates.

Ideas?

Thanks,
Joshua

Source code from one script and three modules:

---------

# This is the program that uses the DBIC schema:

use Integra::UBI::Schema;

my $schema = Integra::UBI::Schema->connect( ...redacted...);
my $row = $schema->resultset('ECCKT')->create({
   'ecckt'        => 'ABCD0123456ABCDEF',
   'customer'     => 'John Johnsonson',
   'end'          => 1269644794,
   'interface'    => 'GigabitEthernet10/1',
   'last_updated' => 1269644794,
   'router'       => 'ar11.slkcutxd.example.com',
   'speed'        => 1000000000,
   'start'        => 1265958902,
   'state'        => 'active',
});
$row->update;

---------

package Integra::UBI::Schema;
use base qw/DBIx::Class::Schema/;

our $VERSION = '0.01';

__PACKAGE__->load_namespaces();
__PACKAGE__->load_components(qw/Schema::Versioned/);

---------

package Integra::UBI::Schema::Result::ECCKT;
use base qw/DBIx::Class::Core/;

__PACKAGE__->table('ecckt');
__PACKAGE__->add_columns(
     ecckt_id => {
        data_type         => 'integer',
        size              => 8,
        is_nullable       => 0,
        is_auto_increment => 1,
    },
    ecckt => {
        data_type         => 'varchar',
        size              => 64,
        is_nullable       => 0,
    },
    if_id => {
        data_type         => 'integer',
        size              => 8,
        is_nullable       => 0,
        is_foreign_key    => 1,
    }
);
__PACKAGE__->set_primary_key('ecckt_id');
__PACKAGE__->has_many('interfaces',
'Integra::UBI::Schema::Result::Interface', 'if_id');

---------

package Integra::UBI::Schema::Result::Interface;
use base qw/DBIx::Class::Core/;

__PACKAGE__->table('interface');
__PACKAGE__->add_columns(
     if_id => {
        data_type         => 'integer',
        is_nullable       => 0,
        is_auto_increment => 1,
    },
    customer => {
        data_type         => 'varchar',
        size              => 256,
        is_nullable       => 1,
        default_value     => '',
    },
    state => {
        data_type         => 'varchar',
        size              => 12,
        is_nullable       => 1,
    },
    router => {
        data_type         => 'varchar',
        size              => 128,
    },
    interface => {
        data_type         => 'varchar',
        size              => 128,
    },
    speed => {
        data_type         => 'integer',
        is_nullable       => 1,
    },
    start => {
        data_type         => 'integer',
        is_nullable       => 1,
    },
    end => {
        data_type         => 'integer',
        is_nullable       => 1,
    },
    last_updated => {
        data_type         => 'integer',
        is_nullable       => 1,
    },
    valid_router => {
        data_type         => 'tinyint',
        is_nullable       => 1,
    },
    valid_it => {
        data_type         => 'tinyint',
        is_nullable       => 1,
    },
    ecckt_id => {
        data_type         => 'integer',
        is_nullable       => 0,
        is_foreign_key    => 1,
    },
);
__PACKAGE__->set_primary_key('if_id');
__PACKAGE__->belongs_to('ecckt', 'Integra::UBI::Schema::Result::ECCKT',
'ecckt_id');

__END__
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/pdx-pm-list/attachments/20100421/3e976a28/attachment.html>


More information about the Pdx-pm-list mailing list