Reference for database error codes and their meanings.
use tommyknocker\pdodb\helpers\DbError;DbError::MYSQL_CONNECTION_LOST // 2006
DbError::MYSQL_CANNOT_CONNECT // 2002
DbError::MYSQL_CONNECTION_KILLED // 2013
DbError::MYSQL_CONNECTION_REFUSED // 2003DbError::MYSQL_DUPLICATE_KEY // 1062
DbError::MYSQL_TABLE_EXISTS // 1050
DbError::MYSQL_FOREIGN_KEY // 1216DbError::POSTGRESQL_CONNECTION_FAILURE // '08006'
DbError::POSTGRESQL_CONNECTION_DOES_NOT_EXIST // '08003'DbError::POSTGRESQL_UNIQUE_VIOLATION // '23505'
DbError::POSTGRESQL_FOREIGN_KEY // '23503'
DbError::POSTGRESQL_NOT_NULL // '23502'DbError::POSTGRESQL_UNDEFINED_TABLE // '42P01'
DbError::POSTGRESQL_UNDEFINED_COLUMN // '42703'DbError::SQLITE_ERROR // 1
DbError::SQLITE_BUSY // 5
DbError::SQLITE_LOCKED // 6
DbError::SQLITE_CONSTRAINT // 19
DbError::SQLITE_ROW // 100
DbError::SQLITE_DONE // 101$mysqlErrors = DbError::getRetryableErrors('mysql');
$pgsqlErrors = DbError::getRetryableErrors('pgsql');
$sqliteErrors = DbError::getRetryableErrors('sqlite');$isRetryable = DbError::isRetryable(2006, 'mysql'); // true$description = DbError::getDescription(2006, 'mysql');
// Returns: "MySQL server has gone away"use tommyknocker\pdodb\helpers\DbError;
$db = new PdoDb('mysql', [
'host' => 'localhost',
'dbname' => 'test',
'retry' => [
'enabled' => true,
'retryable_errors' => DbError::getRetryableErrors('mysql')
]
]);- Exception Hierarchy - Error handling
- Retry Logic - Build retry mechanisms
- Connection Retry - Automatic retry