PDO robi mnie w balona

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 :(

Podobne wpisy

Kategoria: PHP Otagowane jako , , , , 2 komentarzy

2 Responses to PDO robi mnie w balona

  1. a79rtur 06-04-2006, 18:27

    $wynik->closeCursor();
    $wynik=null;
    pomaga :)

  2. Jarek Bolo 26-01-2008, 01:59

    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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

© 2005-2012 normanos.com

domeny i hosting