in reply to Re: DB Error Handling Not Working
in thread DB Error Handling Not Working

Tried that but didn't work either. Trace showed that the error occurred but was again cleared by the 'disconnect' call.

Replies are listed 'Best First'.
Re^3: DB Error Handling Not Working
by poj (Abbot) on Aug 13, 2014 at 19:13 UTC
    Sorry, the connection string should be DBI->connect($data_source, $username, $password, \%attr) so either use
    my $dbh = DBI->connect("DBI:ODBC:$DSN",'','', {RaiseError => 1, PrintError => 1}) or die (Error connecting " $DBI::errstr");
    or move the username/password out of the $DSN.
    poj

    Update : To get current date/time you could just use
    my ($now) = $dbh->selectrow_array('SELECT CURRENT_TIMESTAMP');
Re^3: DB Error Handling Not Working
by roboticus (Chancellor) on Aug 13, 2014 at 22:26 UTC

    sowais:

    If the error is cleared by the disconnect call, then pull the disconnect out of the block and put it after the end of the eval block. If you feel you need similar error checking for the disconnect, wrap that in its own eval block.

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

      sorry, didn't realize i was logged out for the earlier post.. Tried that but eval didn't capture it. Against my better judgement I put in a 'die' statement next to the execute statement and that seems to work! I would prefer not to have an error handler within an error handler but unfortunately I've burned way too much time troubleshooting 'eval's failrue to capture the error.
      eval { $dbh = DBI->connect("dbi:ODBC:$DSN"); ... $sth->execute() or die "Execute Failed: $!"; $dbh->disconnect(); }; if($@) { print "DB Failure: $@"; }