Fehlerbehandlung bei DBI->schließen
Neben handling-Fehlers mit standard-code, die "Unfähig zu verbinden: $DBI::errstr\n" ist es möglich, schreiben Sie eine benutzerdefinierte code wie unten?
Standard:
$dbstore = DBI->connect($dsn, $user, $pw,
{ora_session_mode => $mode, PrintError => 0, RaiseError => 0, AutoCommit => 0})
or die "Unable to connect: $DBI::errstr\n";
Custom:
$dbstore = DBI->connect($dsn, $user, $pw,
{ora_session_mode => $mode, PrintError => 0, RaiseError => 0, AutoCommit => 0});
if (!$dbstore)
{
CUSTOM_LOG_HANDLER("Could not connect to database: $DBI::errstr");
return;
}
Probe-Standard-Code:
#!/usr/bin/perl
# PERL MODULES WE WILL BE USING
use DBI;
use DBD::mysql;
# HTTP HEADER
print "Content-type: text/html \n\n";
# CONFIG VARIABLES
$platform = "mysql";
$database = "store";
$host = "localhost";
$port = "3306";
$tablename = "inventory";
$user = "username";
$pw = "password";
#DATA SOURCE NAME
$dsn = "dbi:mysql:$database:localhost:3306";
# PERL DBI CONNECT (RENAMED HANDLE)
$dbstore = DBI->connect($dsn, $user, $pw) or die "Unable to connect: $DBI::errstr\n";
Danke für Sie Zeit.
Gibt es andere Wege, um würdevoll beenden, ohne Fehler, die immer angemeldet sind, in der web-server-logs?
InformationsquelleAutor Hozy | 2011-07-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie immer mit einem benutzerdefinierten error-handler mit der DBI:
Sagte, Sie sollten die Protokollierung von Fehlern und für eine web-Anwendung, die web-server-Protokolle sinnvoll. Wenn Sie sind besorgt über die Höhe der Lärm in Ihrem web-logs, sollten Sie sich auf die Festsetzung der Fehler, dass die Protokolle weniger laut durch die Beseitigung Quellen von Informationen.
Beispiel wird dieser code funktioniert? $dbstore = DBI- > connect($dsn, $user, $pw, {ora_session_mode => $mode, PrintError => 0, RaiseError => 1, AutoCommit => 0, HandleError => \&handle_error_and_exit}) oder handle_error_and_exit("es Konnte keine Verbindung zu $user/$pw: $DBI::errstr");
RaiseError ist standardmäßig deaktiviert, und wenn Sie nicht senden Sie Nachrichten, die an STDERR, lassen Sie es Weg. PrintError ist standardmäßig aktiviert, das ist der Grund, warum ich es ausgeschaltet habe. In der DBI-Dokumentation heißt es: "Wenn das Unterprogramm den Wert false zurück, dann die RaiseError-und/oder PrintError Attribute überprüft und entsprechend gehandelt wird, als normal.", so lange, wie die Funktion gibt den Wert true zurück (oder
exit
s), dann weder PrintError oder RaiseError sollte eine Wirkung.InformationsquelleAutor Chas. Owens