I'm not seeing any such problem here. The following code works perfectly with DBD::SQLite2 v0.33 and DBD::SQLite v1.05.
You don't 'use' the DBD modules, you use DBI; and it handles loading of the modules specified in the connect.
Scott
I know how one normally invokes DBD modules. I only used them directly in order to give the simplest test case. They originally failed when I tried to open both using the normal DBI interface.
Here's a pared-down example of what I was actually trying. And this did work before, when the only SQLite on the system was DBD::SQLite 0.31.
use strict; use warnings; use DBI; my @working_dbi_drivers = (); foreach my $dbi_driver (DBI->available_drivers()) { eval { DBI->install_driver( $dbi_driver ); }; $@ and next; push( @working_dbi_drivers, $dbi_driver ); }
And the results:
[S0106000393c33758:Documents/Perl Distributions/devworld] darrenduncan% ../perl58 dbd_load_test.pl
dyld: ../perl58 multiple definitions of symbol _sqlite_busy_timeout
/Volumes/Programming/Perl/lib/perl5/site_perl/5.8.5/darwin/auto/DBD/SQLite/SQLite.bundle definition of _sqlite_busy_timeout
/Volumes/Programming/Perl/lib/perl5/site_perl/5.8.5/darwin/auto/DBD/SQLite2/SQLite2.bundle definition of _sqlite_busy_timeout
Trace/BPT trap
The error messages are the same as before, which is the important part. Perl dies hard; this isn't a trappable error.
Does the above code sample work on your machine?
-- Darren Duncan
P.S. The above code is part of a larger routine that auto-detects what data sources are available via all DBI drivers. It calls DBI->data_sources() for each driver that passes the load test.