[CDBI] Deep recursion

Michael G Schwern schwern at pobox.com
Wed Aug 8 02:53:51 BST 2007


Arshavir Grigorian wrote:
> Hi,
> 
> I have a table with a primary key called "id". When I make an insert
> into that table, then try to get the primary key, I get into deep
> recursion:
> 
> __PACKAGE__->table('tab');
> __PACKAGE__->columns(Primary => 'id');
> __PACKAGE__->columns(All => qw/id .../);
> 
> ...
> 
> my $obj = TAB->insert($href);
> my $id = $obj->id;
> 
> And in the logs, I see a lot of:
> 
>         Class::DBI::_flesh('TAB=HASH(0x9102a08)', 'Primary') called at
> /usr/local/share/perl/5.8.7/Class/DBI.pm line 844
>         Class::DBI::get('TAB=HASH(0x9102a08)', 'id') called at
> /usr/local/share/perl/5.8.7/Class/Accessor.pm line 393
>         Class::Accessor::__ANON__('TAB=HASH(0x9102a08)') called at
> /usr/local/share/perl/5.8.7/Class/DBI.pm line 857

If you name a column accessor "id" it blows over the very important built-in
method "id".  Granted it would be nice if it warned you about this very common
mistake.

The following covers how to map columns to differently named accessors.
http://search.cpan.org/~tmtm/Class-DBI-v3.0.16/lib/Class/DBI.pm#Changing_Your_Column_Accessor_Method_Names



More information about the ClassDBI mailing list