2 Stimmen

CodeIgniter möglich, MySQL-Abfrage im Fehlerprotokoll anzeigen?

Ich lande immer mit Fehlern in meinem CodeIgniter-Protokoll wie

ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1

Aber ohne Kontext ist das nicht sehr hilfreich. Gibt es eine Möglichkeit, auch die Abfrage aufzuzeichnen, die diesen Fehler verursacht hat?

2voto

icchanobot Punkte 3303

Ich habe gerade einen kurzen Blick in die system/database/DB_Driver.php (Zeile 323) und protokolliert die SQL-Abfrage nicht mit den von Ihnen gewählten Einstellungen. Im Modus db_debug sollten diese Meldungen jedoch auf dem Bildschirm ausgegeben werden.

Wenn es Ihnen nichts ausmacht, mit den Dateien im CI-Systemordner herumzuhantieren, können Sie die SQL-Anweisung in Ihrer Protokolldatei erhalten, indem Sie system/database/DB_Driver.php (Zeile 323, für CI 2.0.1) zu:

log_message('error', 'Query error: '.$error_msg. ' - '. $sql);

1voto

Jongosi Punkte 2267

Zunächst können Sie die letzte Abfrage abrufen, die ausgeführt wurde, indem Sie $this->db->letzte_Abfrage()


Wir könnten also die Abfrage als String mit dem folgenden Schnipsel erhalten:

// strip out line returns, new lines and tabs
$query = str_replace( array("\r", "\n", "\t"), '', trim($this->db->last_query()) );

Sobald Sie eine Zeichenkette haben, können wir sie in das Fehlerprotokoll eintragen:

error_log( "Last database query: " . $query );

Anmerkung: Je nach Anwendungslogik und Datenverkehr kann dies im Laufe der Zeit das Fehlerprotokoll erheblich aufblähen, so dass ich empfehlen würde, dies nur als vorübergehendes Werkzeug zur Fehlersuche zu verwenden.

Ich hoffe, das hilft.

0voto

Marko Aleksić Punkte 1581

Prüfen Sie, ob Sie für den Primärschlüssel in der Tabelle, in die Sie einfügen, Auto Increment definiert haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X