Mysql
 sql >> Database >  >> RDS >> Mysql

Possibili errori PDOException (MySQL 5)?

La documentazione MySQL è il riferimento completo per codici di errore .

I codici di errore che iniziano con 1000 sono errori del server . Questi includono errori come:

  • Errore:1045 SQLSTATE:28000 (ER_ACCESS_DENIED_ERROR )Messaggio:accesso negato per l'utente '%s'@'%s' (usando la password:%s)

  • Errore:1049 SQLSTATE:42000 (ER_BAD_DB_ERROR )Messaggio:database sconosciuto '%s'

I codici di errore a partire dal 2000 sono errori del client . Questi includono errori come:

  • Errore:2005 (CR_UNKNOWN_HOST ) Messaggio:host server MySQL sconosciuto '%s' (%d)

  • Errore:2003 (CR_CONN_HOST_ERROR ) Messaggio:Impossibile connettersi al server MySQL su '%s' (%d)

Non elencherò tutti i possibili errori, perché sono già documentati e non so quali devi gestire. Ad esempio, gli errori 2001 e 2002 sono specifici delle connessioni socket UNIX, che potrebbero essere irrilevanti per la piattaforma di destinazione.

Non dimenticare di utilizzare PDO::errorCode() e PDO::errorInfo() invece della semplice PDOException messaggio.

Fai il tuo commento su getCode() -- No, non sembra essere supportato in questo modo. Ho fatto un rapido test su var_dump() una PDOException . Sfortunatamente, il suo codice è semplice "0" anche se il codice di errore e SQLSTATE sono inclusi nel messaggio di eccezione.

Exception::getCode() fa parte dell'Exception di base classe, a partire dalla versione PHP 5.1.0. Spetta alla rispettiva implementazione del driver PDO utilizzare questo campo oggetto. Almeno per il driver MySQL, a quanto pare non l'hanno fatto.