[Dbix-class] convention for naming primary keys to avoid ambiguous selects

David Schmidt davewood at gmx.at
Tue Nov 25 15:41:02 GMT 2008


Hello List,

I used to have an "id INTEGER PRIMARY KEY" column in every table.
Now I am using DBIC and repeatedly run into this kind of error.

SELECT me.id, me.title, me.artist FROM cds me WHERE ( me.artist = ? ): '2'
SELECT me.id, me.title, me.artist, artist.id, artist.name FROM cds me
JOIN artists artist ON ( artist.id = me.artist ) WHERE ( id = ? ): '1'
DBI Exception: DBD::SQLite::db prepare_cached failed: ambiguous column
name: id(1) at dbdimp.c line 271 [for Statement "SELECT me.id,
me.title, me.artist, artist.id, artist.name FROM cds me  JOIN artists
artist ON ( artist.id = me.artist ) WHERE ( id = ? )"] at
/usr/local/share/perl/5.8.8/DBIx/Class/Schema.pm line 954

is it best(-DBIC)-practice to name primary keys <tablename>_id to
avoid these errors or is there some other solution?

thanks in advance

David



More information about the DBIx-Class mailing list