in reply to Re: Database access problem
in thread Database access problem
eval{} is a general solition but is not needed in this case becaue DBI handles have two modes for reporting errors depending on the state of the RaiseError attribute.
If $dbh->{RaiseError} is false (the default) then you can ignore SQL errors simply by not checking to see if there's been one.
Personsally I always open DBI handles with RaiseError true and switch it off locally in blocks where I want to ignore or recover from SQL errors.
To drop an SQL object that may or may not exist I do:
{ local $dbh->{RaiseError} = 0; $dbh->do("drop table DSR_SMR_Result_storage_keep"); }
Obviously if the drop fails for some reason other than the object not existing then I miss the reason but since the next SQL statment is typically about to create the object again I do at least get an error there.