Re: [CDBI] Deep recursion
Michael G Schwern <[email protected]> Tue, 07 Aug 2007 18:53:51 -0700
| Newsgroups | gmane.comp.lang.perl.modules.class-dbi |
|---|---|
| Message-ID | <[email protected]> |
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