Dump vorbereitete sql-Abfrage von DBI-Anweisung in PERL
im mit DBI mit Perl eine Verbindung zu meiner PostgreSQL-Datenbank.
Alles ist in Ordnung, aber in meinem Debuggen (Druck-Ergebnisse, etc.) iam nicht in der Lage, um zu sehen, wenn die Abfrage vorbereitet durch Perl-DBI-Modul ist wirklich richtig.
Ich habe so etwas wie dieses:
$sth->prepare( qq{SELECT * FROM company WHERE companyname LIKE ? AND city = ?});
$sth->execute( $name.'%', $city);
Iam nicht in der Lage, um zu sehen, wie die sql-Abfrage sieht nach dem Aufruf von " ausführen als ausführen, wird der Letzte Schritt wo die Parameter gebunden an die Abfrage.
Ich würde gern so etwas wie $sth->getLastExecutedQuery()
oder etwas zu sehen, wie die Abfrage aussieht.
In diesem Fall wird die Funktion getLastExecutedQuery()
zurückkehren würde:
SELECT * FROM company WHERE companyname LIKE 'Company Name%' AND city = 'City name';
Gibt es eine Möglichkeit, diese zu bekommen? Nur für debugging-Zwecke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
DBI unterstützt die folgenden:
Es ist die
DBI->trace($tracefile_handle)
Methode (Spuren alle DBI-Interaktionen) oder$dbh->trace($tracefile_handle)
würde die Spur nur die Interaktionen auf eine bestimmte behandeln. Ausgang standardmäßig auf STDERR, sondern durch die Bereitstellung$tracefile_handle
können Sie explizit sendet die Ausgabe in eine andere Datei (oder einfach shell-Umleitung).DBD::pg unterstützt auch
$h->trace('SQL');
Diese muss unterstützt werden durch Ihre DBD-Treiber zu arbeiten, aber zum Glück DBD::Pg unterstützt die Funktion.In der Dokumentation für das DBI, bei CPAN DBI,
und für den DBD::Pg bei CPAN - DBD::Pg gibt Ihnen wirklich alles, was Sie brauchen, zu wissen, auf Ablaufverfolgung.
Verwenden Sie die DBI-tracing-Anlage. Es funktioniert wie folgt:
Jenseits der Ablaufverfolgung andere erwähnt haben, sollten Sie schauen,https://metacpan.org/pod/DBI#Statement, die Ihnen die zuletzt ausgeführten SQL-und https://metacpan.org/pod/DBI#ParamValues und https://metacpan.org/pod/DBI#ParamTypes was sagen Sie über Ihre Parameter.
Gibt es auch DBIx::Log4perl, die können melden was Sie wollen, ohne alle DBI-tracing.