Hi, I received a bug report (#60193) regarding the following error with DBD::Multi:
DBD::Multi initialisation failed: invalid method name 'versions' at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBI/DBD/ SqlEngine.pm line 88 at t/dbd-multi-db.t line 10 >From what I can tell, that "invalid method name" error originates from DBI::install_method: Carp::croak("invalid method name '$method'") unless $method =~ m/^([a-z]+_)\w+$/; >From what I can gather, DBI::DBD::SqlEngine is calling DBI- >driver_prefix('DBD::multi'), getting back undef, concatenating that undef with 'versions', and then making a call to DBD::_::common::install_method('DBD::Multi::db', 'versions'). This dying because the method name is lacking an underscore. Here's a call stack from the perl debugger right before it dies: . = DBD::_::common::install_method('DBD::Multi::db', 'versions') called from file `/usr/local/lib/perl5/site_perl/5.10.1/i386-freebsd/ DBI/DBD/SqlEngine.pm' line 88 $ = DBI::DBD::SqlEngine::driver('DBD::Multi', ref(HASH)) called from file `/usr/local/lib/perl5/site_perl/5.10.1/i386-freebsd/DBD/File.pm' line 73 $ = DBD::File::driver('DBD::Multi', ref(HASH)) called from file `/usr/ local/lib/perl5/site_perl/5.10.1/DBD/Multi.pm' line 20 $ = DBD::Multi::driver('DBD::Multi', ref(HASH)) called from file `/usr/ local/lib/perl5/site_perl/5.10.1/i386-freebsd/DBI.pm' line 811 $ = eval {...} called from file `/usr/local/lib/perl5/site_perl/5.10.1/ i386-freebsd/DBI.pm' line 811 $ = DBI::install_driver('DBI', 'Multi') called from file `/usr/local/ lib/perl5/site_perl/5.10.1/i386-freebsd/DBI.pm' line 643 $ = DBI::connect('DBI', 'DBI:Multi:') called from file `t/dbd-multi- dr.t' line 9 This appears to be a chance in functionality of DBD::File that was introduced in 1.611_90. Prior to that, I don't think it attempted to inject the versions method. So, I have two questions: 1. Does my analysis seem correct? 2. Any suggestions on the best way to allow DBD::Multi to continue to work with both older releases of DBI and also work with revisions >= 1.612? Thanks, -Dan