Dokumentacja MySQL jest kompletnym źródłem informacji o kodach błędów .
Kody błędów zaczynające się od 1000 to błędy serwera . Należą do nich błędy, takie jak:
-
Błąd:1045 SQLSTATE:28000 (
ER_ACCESS_DENIED_ERROR
)Wiadomość:Odmowa dostępu dla użytkownika '%s'@'%s' (przy użyciu hasła:%s) -
Błąd:1049 SQLSTATE:42000 (
ER_BAD_DB_ERROR
)Wiadomość:Nieznana baza danych '%s'
Kody błędów zaczynające się od 2000 to błędy klienta . Należą do nich błędy, takie jak:
-
Błąd:2005 (
CR_UNKNOWN_HOST
) Wiadomość:Nieznany host serwera MySQL '%s' (%d) -
Błąd:2003 (
CR_CONN_HOST_ERROR
) Komunikat:Nie można połączyć się z serwerem MySQL na '%s' (%d)
Nie będę wymieniał wszystkich możliwych błędów, ponieważ są one już udokumentowane i nie wiem, z którymi trzeba sobie poradzić. Na przykład błędy 2001 i 2002 są specyficzne dla połączeń gniazd UNIX, co może być nieistotne dla platformy docelowej.
Nie zapomnij użyć PDO::errorCode()
i PDO::errorInfo()
zamiast po prostu PDOException
wiadomość.
Przeczytaj swój komentarz na temat getCode()
-- Nie, nie wydaje się to być obsługiwane w ten sposób. Zrobiłem szybki test, aby var_dump()
PDOException
. Niestety, jego kod to proste „0”, mimo że kod błędu i SQLSTATE są zawarte w komunikacie o wyjątku.
Wyjątek::getCode()
jest częścią podstawowego Exception
klasy, od wersji PHP 5.1.0. Wykorzystanie tego pola obiektu zależy od odpowiedniej implementacji sterownika PDO. Przynajmniej w przypadku sterownika MySQL najwyraźniej nie.