Heim >Backend-Entwicklung >PHP-Tutorial >In PHP löst das Programm nach dem Starten einer Transaktion eine Ausnahme aus und es wird weder ein Commit noch ein Rollback ausgeführt. Wird die MySQL-Transaktion zurückgesetzt?

In PHP löst das Programm nach dem Starten einer Transaktion eine Ausnahme aus und es wird weder ein Commit noch ein Rollback ausgeführt. Wird die MySQL-Transaktion zurückgesetzt?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-08-10 09:07:172293Durchsuche

Einige Leute im Internet sagten, dass nach dem Öffnen einer Transaktion ein SQL-Anweisungsausführungsfehler oder ein Programmfehler auftritt. Wenn das Rollback nicht ausgeführt wird, wird das Commit beim nächsten Ausführen automatisch festgeschrieben kein Rollback-Rollback

Aber einige Leute sagen, dass Ausnahmen ausgelöst werden, wenn MySQL nicht festgeschriebene Transaktionen hat, sollte der automatisch übermittelte Parameter AUTOCOMMIT zu diesem Zeitpunkt 0 sein.

Wenn Sie jedoch MySQL-Treiber in anderen Sprachen verwenden, verfügen diese Treiber im Allgemeinen über die Funktion, AUTOCOMMIT automatisch wiederherzustellen. Nach Abschluss der Anforderungsverarbeitung werden nicht verarbeitete Transaktionen automatisch zurückgesetzt.

Antwortinhalt:

Einige Leute im Internet sagten, dass nach dem Öffnen einer Transaktion ein SQL-Anweisungsausführungsfehler oder ein Programmfehler auftritt. Wenn das Rollback nicht ausgeführt wird, wird das Commit beim nächsten Ausführen automatisch festgeschrieben kein Rollback-Rollback


Aber einige Leute sagen, dass Ausnahmen ausgelöst werden, wenn MySQL nicht festgeschriebene Transaktionen hat, sollte der automatisch übermittelte Parameter AUTOCOMMIT zu diesem Zeitpunkt 0 sein.

Wenn Sie jedoch MySQL-Treiber in anderen Sprachen verwenden, verfügen diese Treiber im Allgemeinen über die Funktion, AUTOCOMMIT automatisch wiederherzustellen. Nach Abschluss der Anforderungsverarbeitung werden nicht verarbeitete Transaktionen automatisch zurückgesetzt.


Ich gehe standardmäßig davon aus, dass Sie PDO verwenden.

Das offizielle Dokument sagt Folgendes:


Wenn das Skript endet oder eine Verbindung geschlossen werden soll und Sie eine ausstehende Transaktion haben, setzt PDO diese automatisch zurück. Dies ist eine Sicherheitsmaßnahme, um Inkonsistenzen in den Fällen zu vermeiden, in denen das Skript beendet wird unerwartet – wenn Sie die Transaktion nicht explizit festgeschrieben haben, wird davon ausgegangen, dass etwas schief gelaufen ist, daher wird das Rollback zur Sicherheit Ihrer Daten durchgeführt.
Wenn das Skript endet oder wenn eine Verbindung geschlossen werden soll


Das bedeutet, dass das Skript endet (einschließlich normalem Ende oder abnormalem Ende).

PDO führt automatisch einen Rollback durch

PDO wird automatisch zurückgesetzt.
Das Dokument hat es sehr deutlich gemacht.

Wenn Sie den PDO-Treiber nicht verwenden, können Sie die entsprechende Treiberdokumentation überprüfen oder in der Frage klar angeben, welchen Treiber Sie verwenden.

Übrigens wird die bisherige Funktion mysql_connect() offiziell nicht mehr empfohlen (war veraltet).

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn