Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verfolgen Sie nicht-deterministische MySQL-Fehler in Perl

Angenommen, Ihre Datenbank läuft mit den Standardeinstellungen, bin ich eher überrascht, dass Ihre SELECT immer gibt zwei verschiedene Werte zurück.

Die Dokumentation sagt dies

Wenn also der Standardwert REPEATABLE READ Isolationsstufe aktiv ist, würde ich erwarten, dass alle Abfragen Daten zurückgeben, die mit dem Status der Datenbank zum Zeitpunkt der ersten Abfrage konsistent sind.

Es klingt jedoch so, als könnte dies hilfreich sein

Ich denke, du solltest es versuchen

$O_dbh->do('SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED');

unmittelbar nach der Verbindung und sehen Sie, ob das die Dinge für Sie behebt.

Sie sollten jedoch sicherstellen, dass Sie entweder disconnect das Datenbank-Handle nach dieser Transaktion oder setzen Sie es auf die vorherige Isolationsstufe zurück. Andernfalls erhalten Sie uneinheitliche Ergebnisse.