2012-03-28 9 views
1

Ich debugge eine Webanwendung, die MySQL verwendet. Ich sehe, dass viele Tabellen zwischen verschiedenen Flows geändert werden (Registrierung, Bearbeitung usw.). Außerdem ist es sehr schwierig, durch die Codebasis zu gehen, um zu verstehen, was alle Tabellen zwischen verschiedenen Aufrufen geändert haben.Gibt es eine Möglichkeit zu wissen, was alle Tabellen geändert werden

Gibt es einen besseren wat zu wissen, was alle Tabellen zwischen zwei Zeiten (zwei Aufrufe) modifed sind.

+1

Meinen Sie, dass die Struktur geändert Tabellen oder dass Daten hinzugefügt wurde? Sie sollten den Tabellen Trigger hinzufügen können, die protokollieren können, wenn Daten hinzugefügt werden. –

Antwort

4

Haben general query log aktiviert zu wissen, was alle Abfragen ausgeführt werden.

Ich kam über this- How can I tell when a MySQL table was last updated?

In späteren Versionen von MySQL Sie die information_schema Datenbank verwenden können, um Ihnen zu sagen, wenn eine andere Tabelle aktualisiert wurde:

SELECT UPDATE_TIME VON INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbname' AND TABLE_NAME = 'tabname'

Das bedeutet natürlich das Öffnen einer Verbindung zur Datenbank.

2

Im Folgenden finden Sie verschiedene Zeitstempel über Ihre Datenbank zurück. Sehen Sie, ob Ihnen das hilft.

SELECT * 
FROM information_schema.tables 
WHERE TABLE_SCHEMA = 'dbname' 

Sie können auch eine MySQL-Profiler prüfen, mit wie http://www.jetprofiler.com/

+0

Abrufen von I_S ist gut. Aber es funktioniert nur für MyISAM. –

+0

Ja, du hast Recht. Profiler könnte auch für innodb arbeiten. – Rahul

1

auf Ihrem Server aktivieren binlog, die als die querylog besser für Ihre Zwecke ist, da es nur die Änderungen enthält (Updates, Einfügungen, Löschungen).

Hoevery, haben Sie mysqlbinlog Kommandozeilen-Tool verwenden, um es in eine Textdatei zu transformieren:

mysqlbinlog server-bin.00001 > binlog.txt 
Verwandte Themen