wird jede Datenbankverbindung als eine separate Datenbank könnten Sie $dbh
eindeutig ein Unterprogramm schreiben Griff dargestellt werden, die, solange die Liste der angeschlossenen Datenbanken von allen angeschlossenen Datenbank Griff trennen ist immer die gleiche
Ich bin mir nicht sicher, warum Sie auf die Verbindungszeichenfolgen fixieren. Vermutlich meinst du die DSNs (Data Source Names), die du beim Aufruf an DBI->connect
benutzt hast? Sie sind Parameter einfach auf den Verbindungsvorgang und ein Datenbank-Handle kann nicht nach der Tat von seinem ursprünglichen DSN
Issuing rollback() due to DESTROY without explicit disconnect()
identifiziert werden Dies bedeutet, dass Sie Transaktionen verwenden. Der beste Weg wäre, die Nummer rollback
oder commit
selbst zu wählen, um die Transaktion zu beenden. Es ist eine schlechte Idee, eine Transaktion offen zu lassen, wenn das Programm beendet wird, wie Sie auf dem Standardverhalten des Datenbanktreiber
Die documentation for DBI::disconnect
sagt diese
Im Allgemeinen setzen, wenn Sie Ihre Änderungen festgeschrieben werden sollen oder Wenn Sie die Verbindung trennen, sollten Sie vor dem Trennen explizit "commit" oder "rollback" aufrufen.
Sie auch die gleiche Warnung erhalten, wenn Sie disconnect
nennen, während eine Transaktion noch geöffnet ist, so ein commit
oder rollback
ist auf jeden Fall die richtige Methode
Es ist in Ordnung Perl Zerstörung Sequenz implcitly alle Datenbank trennen zu lassen, Handles, solange keine Transaktionen zur Zeit offen sind
DBI wird implizit für Sie die Verbindung trennen, wenn das Anweisungshandle den Gültigkeitsbereich verlässt. – simbabque
@simbabque: Ich bekomme Fehler als: Ausgeben Rollback() wegen DESTROY ohne explizite Trennung() ..... Ich verwende separate Trennfunktion, um dies zu verhindern, aber es wäre toll, eine einzige Trennfunktion für alle zu verwenden die Saiten . – Husk01inJun