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.
Mateusz Kamiński


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