in reply to Re^4: DBI Problem
in thread DBI Problem
Hello tultalk,
Regarding: I can't see where substituting your suggested code would do anything different. Returning the correct rsults indicates no error correct?.
Yes and no, Yes because in theory if you get the same output should prove that your script is crashing at another point. No because if you use the die methods it will clearly show the line that the script died and the also the reason (if you print error message).
If I was you, I would debug each and single step of the function / method that you are adding / updating. Unfortunately there is no easy way out of this. You need to insert a die methods.
As an alternative you can use something like:
my $dbh = DBI->connect("dbi:DriverName:db_name", $user, $password, { RaiseError => 1, AutoCommit => 0 });
By using RaiseError you will avoid needing to check each call it will die by default on each wrong call.
From the DBI/RaiseError documentation:
Type: boolean, inherited The RaiseError attribute can be used to force errors to raise exceptio +ns rather than simply return error codes in the normal way. It is "of +f" by default. When set "on", any method which results in an error wi +ll cause the DBI to effectively do a die("$class $method failed: $DBI +::errstr"), where $class is the driver class and $method is the name +of the method that failed. E.g., DBD::Oracle::db prepare failed: ... error text here ...
Hope this helps, BR.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: DBI Problem
by tultalk (Monk) on Sep 29, 2017 at 12:48 UTC | |
by thanos1983 (Parson) on Sep 29, 2017 at 15:01 UTC |