![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Witam
Aż dziwnie się czuję - cały czas piszę na forum, ale strasznie dawno nie zadawałem pytań:) Podczas pracy z PDO natrafiłem dziś na jednym z serwerów klienta, na nietypowy problem. Zaprezentuję go na przykładzie.
Pierwsze zapytanie wykonuje się poprawnie, i zwracana jest (var_dump) tablica zawierająca 1 rekord. (zgodnie z oczekiwaniami ![]() Niestety - 2 zapytanie się nie wykonuje, wyrzucając wyjątek o treści: Cytat Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.' in /test/test.php:35 Stack trace: #0 /test/test.php(35): PDO->query(' SELECT 1 ') #1 {main} thrown in /test/test.php on line 35 I wszystko wydawałoby się jasne, gdyby nie to, że błąd taki pojawia się tylko na jednym z serwerów na których pracuję. Co więcej - jest to o tyle ciekawe, że błąd nie pojawia się za każdym razem, a po drugie - przecież wyraźnie widać, że 1 zapytanie może zwrócić tylko 1 rekord, a wiec fetch() powinno opróżnić bufer do końca. Oczywiście - mógłbym rozwiązać ten problem tak jak radzi komunikat, ale po pierwsze - po to jest fetch by z niego korzystać, i nie zawsze wydaje się konieczne korzystanie z fetchAll, a ustawianie PDO::MYSQL_ATTR_USE_BUFFERED_QUERY też wygląda raczej na leczenie objawów niż przyczyn. Czy spotkaliście się z taką sytuacją? I czy można poradzić coś adminowi w celu usunięcia tego problemu? ps. proszę się nie śmiać z $GLOBALS - to na potrzeby testu ![]() -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 14:13 |