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.