http://qs321.pair.com?node_id=1030390


in reply to Using DBI to extract from 2 databases

You don't need to explicitly "use DBD::mysql" - DBI will handle that for you.

To help with debugging, wrap all your "prepares" and "executes" with eval, like this:

eval { $sth = $self->dbh->prepare( $sql ); }; if ($@) { die "Database error (prepare): ", $self->dbh->errstr; } eval { $sth->execute(); }; if ($@) { die "Database error (execute): ", $self->dbh->errstr; }

Replies are listed 'Best First'.
Re^2: Using DBI to extract from 2 databases
by Anonymous Monk on Apr 24, 2013 at 13:31 UTC
    What's wrong with DBI's RaiseError?
Re^2: Using DBI to extract from 2 databases
by scorpio17 (Canon) on Apr 24, 2013 at 20:57 UTC

    I'm assuming that RaiseError is on. That causes DBI to "die" if any method results in an error. You use the eval block to trap the error and handle it however you wish. For example, I've found it useful to print out the sql statement if a prepare fails, or the argument list if an execute fails, etc.

    The connect statement should look something like this:

    $dbh = DBI->connect($dsn, $user, $password, {RaiseError => 1, });