źle się czuję wśród tych co otwarte już drzwi chcą wyważyć
17 mar 2006
Małego szoku doznałem dzisiaj wrzucając gotowy serwis na serwer gdzie PDO zaczęło mi wyrzucać bezsensowne bledy.
w domku na WinXP wszystko dziala idealnie: php 5.2.1 jako modul / apache2 / mysql PDO Driver for MySQL, client library version 5.0.18 MySQL 5.0.18
serwer: PHP 5.1.2-1.dotdeb.2 jako cgi PDO Driver for MySQL, client library version 4.1.15 MySQL 5.0.16
Fatal error: Uncaught exception ‘PDOException’ with message ‘SQLSTATE[HY000]: General error: 2050 ‘ in…
na php http://bugs.php.net/bug.php?id=35793 do niczego ciekawego nie doszli ;(
Tutaj jest mój wątek na pl.comp.lang.php. Wyłapałem kilka różnic, zgadzało by się to z opisem na bugtrackerze php, że to jakiś problem z obiektami. Nawet zakładając, że to ja gdzieś zrobiłem błąd to sytuacja gdzie na localhoście wszystko działa a na serwerze się krzaczy jest strasznie irytująca ![]()
2 Responses for "PDO robi mnie w balona"
06-04-2006 @ 18:27 1
$wynik->closeCursor();
$wynik=null;
pomaga
26-01-2008 @ 01:59 2
Jeśli używasz $db->prepare(), to powyższe nie koniecznie pomaga. Jeden z developerow samego PHP zaleca poniższe:
$DBh->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
Ja dziorgałem sobie aplikacyjke na laptopie z Xubuntu 7.10, PHP 5.2 coś, MySQL też 5 coś i najważniejsze, klient MySQL dla PDO też był 5 coś. Bez żadnych problemów. Nawet nie musiałem zamykać kursorów czy nullować obiektów.
A jak przerzuciłem na serwer produkcyjny (nazwa.pl) to zaczęły się problemy.
No i jak ktoś na grupie pl.comp.lang.php zaóważył też miałem różnice w kliencie MySQL dla PDO. Na nazwa.pl jest 4.1.11.
Generalnie można wyróżnić dwa rodzaje problemów:
1) nie zamykanie kursora, nie null-owanie obiektów zapytań. To daje nam wyjątek, że próbujemy korzystać z bazy bez zakończenia poprzedniego korzystania.
2) korzystanie z ‘prepare’ wtedy dostajemy wyjątek General Error 2036, albo 2050. Na to trzeba użyć: $DBh->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
Tyle wywnioskowałem z czytania różnych wypowiedzi na ten temat.
Zostaw komcia ;)