Prova a spostare $dbh->beginTransaction(); prima del try