Mateusz matipl Kamiński: blog o programowaniu, IT, finansach i własnym życiu

Zend Framework: SQLSTATE[HY000] [2002] Invalid argument

Tym razem krótko i banalnie, ale może komuś się przyda.
Kilka dni temu po ręcznej instalacji PHP 5.3.2 na jednej z maszyn z Debianem i podpięciu aplikacji opartej o Zend Framework jedyne co było widać to strona błędu z wpisem w logach serwisu:

SQLSTATE[HY000] [2002] Invalid argument

Super, konkretny komunikat :/ A jakże, nie ma jak PHP ;) Na początku pomyślałem, że to może wina wersji (aktualizacja php 5.2 -> 5.3) – nie, to nie było to.

Rozwiązanie okazało się banalne. Wspomniany błąd generuje PDO, a jest wynikiem błędnie określonej lokalizacji socketu MySQL przez PHP podczas kompilacji (często PHP uważa, że to /tmp/mysql.sock – ?).
Wystarczy dodać w naszym php.ini informację o lokalizacji:

; najpierw sprawdź, gdzie jest Twój mysql.sock
pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock

Może i bezpośrednio Zend Frameworka nie dotyczy, lecz PHP+PDO. Ale jeśli już da się złapać taki wyjątek, to Zend Framework powinien go zamienić na coś konkretnego.

Podobne wpisy:

CZYTAJ PRZEZ RSS

  • Jakiś czas temu miałem podobne problemy ;)
    W moim wypadku prostszym rozwiązaniem (niewymagającym grzebania w konfiguracji php) okazała się zmiana określenia hosta db z „localhost” na 127.0.0.1
    P.S. Dla dociekliwych polecam krótki aczkolwiek treściwy opis na http://stackoverflow.com/questions/1435445/error-on-creating-connection-to-pdo-in-php

  • @Bapro: podane przeze mnie rozwiązanie z podaniem socketu jest rozwiązaniem problemu…
    Zmiana localhost na IP to obejście ;) Które ostatnio stosowaliśmy dla jakiegoś bytu z Javy :/ bo nie widziałem serwera Oracle…
    Jakiś lipny soft robią ;) Od zalania dziejów używa się localhost, example.com itd.

Możesz śledzić odpowiedzi za pomocą kanału RSS 2.0