I am reading unclean data and inserting to DB. At this stage, I need DB insert() statements to die if something dodgy happens, even a warning, for example I get this Non-integer value supplied for column. I use db-connection parameters these: {RaiseError=>1,PrintError=>1} and wrap my insert() around an eval to catch any die(), like my $rc = eval { $obj->insert(); 1 }; if( $@ || ! $rc ){ die "error for this object: $obj" }
But it does not work. The warning stays a warning and does not elevate to a die as I had hoped.
This works but isn't it too heavy in a loop of thousands of inserts?
for my $obj (@objstoinsert){ local $SIG{__WARN__} = sub { die "died with $_[0], the object was $o +bj" } $obj->insert() }
Isn't there a simple flag to ask to elevate all warnings to errors and die?
p.s. I could localise __WARN__ to an outer scope but messes up other warn()'s.
In reply to DBIx::Class die on warning by bliako
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |