moritz has asked for the wisdom of the Perl Monks concerning the following question:
I'm in the middle of porting a DBIx::Class based application to the firebird database, and thus DBD::InterBase.
On insert statements I get the error message
Can't locate DBI object method "last_insert_rowid" via package "DBD::I +nterBase::db" at /usr/share/perl5/DBIx/Class/Storage/DBI.pm line 1275 +.
which means that DBD::InterBase doesn't seem to support the last_insert_id method as DBIx::Class expects.
Ironically during the build process a file InterBase.xsi is generated, which contains such a method:
#ifdef dbd_db_last_insert_id void last_insert_id(dbh, catalog, schema, table, field, attr=Nullsv) SV * dbh SV * catalog SV * schema SV * table SV * field SV * attr CODE: { D_imp_dbh(dbh); ST(0) = dbd_db_last_insert_id(dbh, imp_dbh, catalog, schema, table +, field, attr); } #endif
So there seems to be support for last_insert_id, but it's not enabled. How can I enable it? If I simply remove the #ifdef and #endif lines from that file, I get this message many times during make test:
install_driver(InterBase) failed: Can't load '/home/moritz/tmp/DBD-Int +erBase-0.48/blib/arch/auto/DBD/InterBase/InterBase.so' for module DBD +::InterBase: /home/moritz/tmp/DBD-InterBase-0.48/blib/arch/auto/DBD/I +nterBase/InterBase.so: undefined symbol: dbd_db_last_insert_id at /us +r/lib/perl/5.10/DynaLoader.pm line 196.
Or is there any other simple way to get DBIx::Class + DBD::InterBase working, without digging deep into both and writing a DBIx::Class::Storage::DBI::Interbase module or so?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Building DBD::InterBase with last_insert_id
by mje (Curate) on Feb 04, 2010 at 10:27 UTC | |
by moritz (Cardinal) on Feb 04, 2010 at 11:49 UTC | |
by mje (Curate) on Feb 04, 2010 at 13:33 UTC | |
by roey (Initiate) on Apr 01, 2010 at 08:07 UTC | |
by moritz (Cardinal) on Apr 01, 2010 at 10:33 UTC | |
|
Re: Building DBD::InterBase with last_insert_id
by hangon (Deacon) on Feb 04, 2010 at 17:02 UTC |