In addition to the other suggestions, you can also see what's going on in the DBI call by setting trace() on the database handle or the statement handle. If you do something like this:
$dbh->trace(3)
or
$st->trace(3)
you'll get verbose output to the screen that might be of help.