2016-07-09 25 views
0

Ich verbringe viel Zeit in der Entwicklung von MySQL Workbench. In den letzten paar Wochen habe ich an einigen gespeicherten Prozeduren gearbeitet und diese in Rollback-Transaktionen getestet. Aber die Änderungen, die das Verfahren vorgenommen hat, werden durchgeführt, obwohl ich sie zurückgerollt habe. Ich habe einen Vorschlag gefunden, 'set autocommit = 0;' und das hat lange gedauert. Aber jetzt funktioniert das auch nicht. Ich führe Folgendes aus, selbst wenn ich die SELECT-Anweisungen auf einem anderen Computer ausführen, auf dem Workbench ausgeführt wird, werden die von der Prozedur vorgenommenen Änderungen angezeigt.MySQL wird keine Transaktionen rückgängig machen

set autocommit = 0;

Transaktion starten;

Aufruf TestProc (129,131);

Wählen Sie * aus Tabelle1;

Wählen Sie * aus Tabelle2;

Rollback;

Ich habe noch nie die "set autocommit = 0" Zeile benötigt und es vermasselt Dinge bis ich es auf 1 zurückgesetzt habe. Aber wie gesagt, das funktioniert jetzt nicht mal.

Ich frage mich, ob ich Statistiken oder etwas zurücksetzen muss. Ich habe "Flush Tables" gemacht. und "Flush Query Cache;"; aber das Problem besteht weiter. Ich vermute, das ist entweder ein Wartungsproblem, das ich nicht zu beheben weiß.

Jede Hilfe wird sehr geschätzt.

Danke,

Mike

+0

Sie brauchen mehr Details als das – Drew

Antwort

0

14.3.2 Statements That Cannot Be Rolled Back

Einige Aussagen können nicht rückgängig gemacht werden. Im Allgemeinen gehören dazu ... oder gespeicherte Routinen (ich meine Ihre Aufruf TestProc (129,131);). Sie sollten Ihre Transaktionen so gestalten, dass solche Anweisungen nicht enthalten sind.

Ich hoffe, es war hilfreiche Informationen.

+0

Leonid, Vielen Dank für Ihre Antwort. Ich habe jedoch gespeicherte Prozeduren innerhalb von Rollback-Transaktionen für einige Jahre ohne Probleme ausgeführt, einschließlich Prozeduren, die Datensätze aktualisieren, einfügen und löschen. Ich habe erst vor ein paar Wochen angefangen, auf dieses Problem zu stoßen. –