Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^3: Class::DBI::Loader error: Can't locate object method "set_db"

by Corion (Pope)
on Apr 12, 2005 at 11:15 UTC ( #446931=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Class::DBI::Loader error: Can't locate object method "set_db"
in thread Class::DBI::Loader error: Can't locate object method "set_db"

The following code works for me. It has the following differences:

  • It uses DBD::SQLite, where you use DBD::mysql
  • I didn't test out putting the whole stuff into two separate files.

One thing that comes to mind: Did you install the proper Class::DBI subclass (Class::DBI::mysql) ?

Table setup script

#!/usr/bin/perl -w use strict; use DBI; my $dbh = DBI->connect('dbi:SQLite:dbfile=kudra.sqlite',"","", {AutoCo +mmit => 0}); my @statements; { local $/; @statements = split /;/, <DATA>; }; for my $statement (@statements) { print "$statement\n"; eval { $dbh->do($statement); $dbh->commit; }; $@ ||= $dbh->errstr; if ($@) { if ($statement =~ /^drop/i) { warn $@; } else { die $@; }; }; }; $dbh->commit; $dbh->disconnect; __DATA__ create table person ( id INTEGER PRIMARY KEY, name VARCHAR(256) ); insert into person (name) values ("Corion"); insert into person (name) values ("Kudra"); insert into person (name) values ("vroom"); insert into person (name) values ("jcwren");

Class::DBI script

#!/usr/local/bin/perl -w package MyCompany::MyProduct::Database; use Class::DBI::Loader; my $loader = Class::DBI::Loader->new( dsn => "dbi:SQLite:dbfile=kudra.sqlite", user => "username", password => "password", namespace => 'MyCompany::MyProduct::Database', relationships => 1); package main; use strict; use warnings; #use MyCompany::MyProduct::Database; use Data::Dumper; my $person = MyCompany::MyProduct::Database::Person->retrieve(3); print Dumper $person;


Comment on Re^3: Class::DBI::Loader error: Can't locate object method "set_db"
Select or Download Code
Replies are listed 'Best First'.
Re^4: Class::DBI::Loader error: Can't locate object method "set_db"
by kudra (Vicar) on Apr 12, 2005 at 11:34 UTC
    Your question provided the solution!

    I checked that Class::DBI::Loader::mysql was up-to-date, but that was installed with Class::DBI::Loader, which I just installed.

    I didn't think of Class::DBI::mysql at all, both because I didn't know about that module in particular, and, secondly, because I already had working code using Class::DBI with a mysql database. However, when I checked, Class::DBI::mysql was not installed, and installing it solved the problem.

    This really ought to be documented somewhere--I didn't see it in Class::DBI::Loader, Class::DBI::Loader::Generic, or Class::DBI::Loader::mysql. Now that I know what I'm looking for, however, I do see it in the buglist.

    It seems odd that installing Class::DBI::Loader::mysql wouldn't also handle Class::DBI::mysql if it is also required, especially since Class::DBI::Loader::* were all included with a Class::DBI::Loader install. Or it could have required that I install the desired Class::DBI::Loader:: module, and at that point install the Class::DBI:: requirement. Corion has suggested that perhaps there were some skipped tests which would have alerted me when installing, and I must confess I never read the installation reports unless there is a fatal error (and, with a MySQL related module, I often don't even read those, as the problem is usually that the database has a password). I guess that's why this is on the bug list.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://446931]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (9)
As of 2015-07-29 10:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (263 votes), past polls