Heim  >  Artikel  >  Datenbank  >  Warum sind meine neu erstellten MySQL-Sitzungen nach einer Transaktion nicht sofort sichtbar?

Warum sind meine neu erstellten MySQL-Sitzungen nach einer Transaktion nicht sofort sichtbar?

DDD
DDDOriginal
2024-11-23 22:49:11902Durchsuche

Why Are My Newly Created MySQL Sessions Not Immediately Visible After a Transaction?

Gespeicherte Ergebnisse nach dem Einfügen und Löschen von MySQL

In einer Python/WSGI-Webanwendung werden Sitzungen in einer InnoDB-Tabelle in einem lokalen MySQL gespeichert Datenbank. Nach der Authentifizierung werden alte Sitzungen gelöscht, eine neue Sitzung erstellt und die Transaktion wird festgeschrieben, um eine neue Sitzungs-ID für das Cookie zu erstellen. Manchmal wird die neu erstellte Sitzung jedoch nach einer Umleitung nicht in der Datenbank gefunden.

Verstehen des Problems

MySQL verwendet die Standardisolationsstufe „REPEATABLE READ“, d. h Bei Transaktionen werden nach dem Start der Transaktion keine Änderungen vorgenommen. Selbst wenn diese Änderungen übernommen wurden, bleiben sie unsichtbar.

Lösung

Um dieses Problem zu beheben, gibt es zwei Möglichkeiten:

  1. Beenden Sie die Transaktion:

    • Geben Sie ein COMMIT oder ROLLBACK aus in den Sitzungen, in denen die zwischengespeicherten Ergebnisse angezeigt werden. Dadurch wird die Transaktion beendet und die festgeschriebenen Änderungen werden sichtbar.
  2. Isolationsstufe ändern:

    • Ändern Sie die Isolationsstufe für die Sitzungen auf „READ COMMITTED“ setzen. Dadurch wird sichergestellt, dass von anderen Transaktionen vorgenommene Änderungen sichtbar sind, nachdem sie festgeschrieben wurden.

Zusätzliche Überlegungen

Schauen Sie sich das MySQL-Handbuch an für Optionen zum Ändern der Standardisolationsstufe. Dadurch können alle Sitzungen automatisch die bevorzugte Isolationsstufe verwenden.

Das obige ist der detaillierte Inhalt vonWarum sind meine neu erstellten MySQL-Sitzungen nach einer Transaktion nicht sofort sichtbar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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