sql >> Databasteknik >  >> RDS >> Mysql

Möjliga PDOException-fel (MySQL 5)?

MySQL-dokumentationen är den fullständiga referensen för felkoder .

Felkoder som börjar på 1000 är serverfel . Dessa inkluderar fel som:

  • Fel:1045 SQLSTATE:28000 (ER_ACCESS_DENIED_ERROR )Meddelande:Åtkomst nekad för användare '%s'@'%s' (med lösenord:%s)

  • Fel:1049 SQLSTATE:42000 (ER_BAD_DB_ERROR )Meddelande:Okänd databas '%s'

Felkoder som börjar vid 2000 är klientfel . Dessa inkluderar fel som:

  • Fel:2005 (CR_UNKNOWN_HOST ) Meddelande:Okänd MySQL-servervärd '%s' (%d)

  • Fel:2003 (CR_CONN_HOST_ERROR ) Meddelande:Kan inte ansluta till MySQL-servern på '%s' (%d)

Jag tänker inte lista alla möjliga fel, eftersom de redan är dokumenterade, och jag vet inte vilka du behöver hantera. Till exempel är fel 2001 och 2002 specifika för UNIX-socket-anslutningar, vilket kan vara irrelevant för din målplattform.

Glöm inte att använda PDO::errorCode() och PDO::errorInfo() istället för bara PDOException meddelande.

Om din kommentar om getCode() -- Nej, det verkar inte stödjas på det sättet. Jag gjorde ett snabbtest för att var_dump() en PDOException . Tyvärr är dess kod enkel "0" även om felkoden och SQLSTATE ingår i undantagsmeddelandet.

Undantag::getCode() är en del av basen Exception klass, från och med PHP version 5.1.0. Det är upp till respektive PDO-drivrutinimplementering att använda detta objektfält. Åtminstone för MySQL-drivrutinen gjorde de det tydligen inte.



  1. Är det någon mening med att använda MySQL LIMIT 1 när man frågar på indexerat/unikt fält?

  2. Proaktiva SQL Server Health Checks, Del 3:Inställningar för instans och databas

  3. Hur man infogar om rad inte finns (UPSERT) i MySQL

  4. Varför mysql INSERT ... PÅ DUPLIKATNYCKELUPPDATERING kan bryta RBR-replikering på en master/master-konfiguration