Zakładając, że Twoja baza danych działa z ustawieniami domyślnymi, bardziej dziwię się, że Twój SELECT
kiedykolwiek zwraca dwie różne wartości.
Dokumentacja mówi to
Tak więc, jeśli domyślny REPEATABLE READ
obowiązuje poziom izolacji, spodziewałbym się, że wszystkie zapytania zwrócą dane zgodne ze stanem bazy danych w momencie pierwszego zapytania.
Wygląda jednak na to, że może to pomóc
Myślę, że powinieneś spróbować
$O_dbh->do('SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED');
natychmiast po połączeniu i sprawdź, czy to rozwiąże problem.
Należy jednak pamiętać, aby disconnect
uchwyt bazy danych po tej transakcji lub powrót do poprzedniego poziomu izolacji. W przeciwnym razie zaczniesz otrzymywać niespójne wyniki.