Hans: dbi SQLite errors unterdrücken

Beitrag lesen

Hallo,

ahh, danke. Habs installiert und umgesetzt aber die Zeile erscheint trotzdem noch.

use 5.010;
    use DBI qw();
    use Try::Tiny;

my $dbh = DBI->connect("dbi:SQLite:dbname=meinedb.db", "", "", {
        RaiseError => 1,
        AutoCommit => 1,
    });

try {
        $dbh->do(…);
    } catch {
        when /database is locked/ {}    # ignore
        default { die $_ }              # rethrow
    };

  
ich glaub ich muss dir mal die subroutine zeigen. ich find nicht was da falsch sein sollte. Selbst wenn ich im CatchBereich nur den default zum ignorieren angebe sehe ich die Meldung.  
Den connect mache ich genauso wie du oben. Diese sub bekommt ein sql als funktionsparameter übergeben:  
  
~~~perl
sub sqliteselect  
{  
        $errorcount=0;  
        do  
        {  
                $errorcount++;  
                try{  
                        $res = $dbh->selectall_arrayref($_[0]);  
                } catch {  
                        default { }  
                };  
  
        }while ($dbh->err() > 0 && $errorcount <= 10);  
        if($errorcount>10){  
             bla;  
	     bla;  
        }  
        else  
        {  
                return $res;  
        }  
}

Siehst du was?

Danke,
Hans