Thread: DBD::PG question
In a perl script using DBI and DBD:Pg, I need to drop/create a table: $dbp->{RaiseError} = 0; $dbp->do( "DROP TABLE $table"); $dbp->{RaiseError} = 1; $dbp->do( "CREATE TABLE $table ..." ); If the table does not exist, the "DROP TABLE" produces an error message; but script doesn't die because RaiseError was set to zero. Is there a way to suppress this error message and then reset the change so an error in create *is* seen? Frank
At 07:30 AM 3/29/05, Frank Bax wrote: >In a perl script using DBI and DBD:Pg, I need to drop/create a table: > $dbp->{RaiseError} = 0; > $dbp->do( "DROP TABLE $table" ); > $dbp->{RaiseError} = 1; > $dbp->do( "CREATE TABLE $table ..." ); > >If the table does not exist, the "DROP TABLE" produces an error message; >but script doesn't die because RaiseError was set to zero. Is there a way >to suppress this error message and then reset the change so an error in >create *is* seen? Thanks to Sean for suggesting I turn PrintError off/on: http://search.cpan.org/~timb/DBI-1.48/DBI.pm#PrintError Works as advertised - if only I'd found those docs before asking my question...
Frank Bax <fbax@sympatico.ca> writes: > In a perl script using DBI and DBD:Pg, I need to drop/create a table: > $dbp->{RaiseError} = 0; > $dbp->do( "DROP TABLE $table" ); > $dbp->{RaiseError} = 1; > $dbp->do( "CREATE TABLE $table ..." ); > > If the table does not exist, the "DROP TABLE" produces an error message; but > script doesn't die because RaiseError was set to zero. Is there a way to > suppress this error message and then reset the change so an error in create > *is* seen? I think it looks something like this: { local($dbp->{RaiseError}) = 0; local($dbp->{PrintError}) = 0; $dbp->do( "DROP TABLE $table" ); } $dbp->do( "CREATE TABLE $table ..." ); -- greg