Skip to main content

PgError

Enum PgError 

Source
#[non_exhaustive]
pub enum PgError {
Show 18 variants Server(Box<PgServerError>), Protocol(ProtocolError), Transport(TransportError), Auth(String), TypeConversion(Error), Config(String), ConnectionClosed, UnexpectedNull { column: String, }, ColumnNotFound { name: String, }, ColumnIndexOutOfBounds { index: usize, count: usize, }, Timeout, Pool(PoolErrorVariant), InvalidState(String), Unsupported(String), Cancelled, Io(Error), Tls(Error), Other(String),
}
Expand description

The main error type for the PostgreSQL client.

This enum distinguishes between different error categories:

  • Server errors — PostgreSQL returned an ErrorResponse message with structured fields (SQLSTATE code, severity, detail, hint, etc.).
  • Transport errors — Network-level failures (connection refused, timeout, TLS handshake failure, etc.).
  • Protocol errors — Wire protocol violations (unexpected message, bad encoding).
  • Authentication errors — Failed authentication (wrong password, unsupported method).
  • Type conversion errors — Failed conversion between Rust and PostgreSQL types.
  • Configuration errors — Invalid connection string or parameters.
  • Connection state errors — Connection closed, wrong state for operation.
  • Column/row errors — Column not found, index out of bounds, unexpected NULL.
  • Timeout — Operation timed out.
  • Pool errors — Connection pool exhaustion or management errors.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Server(Box<PgServerError>)

Error returned by the PostgreSQL server (ErrorResponse).

Contains all fields from the ErrorResponse message: severity, SQLSTATE code, message, detail, hint, position, constraint, etc.

Boxed to reduce the overall size of the enum since PgServerError contains many String and Option fields.

§

Protocol(ProtocolError)

Wire protocol violation.

§

Transport(TransportError)

Network/transport error.

§

Auth(String)

Authentication failure.

§

TypeConversion(Error)

Type conversion error.

§

Config(String)

Configuration error (invalid connection string, missing required field, etc.).

§

ConnectionClosed

Connection is closed.

§

UnexpectedNull

Unexpected NULL value in a column that was expected to be non-null.

Fields

§column: String
§

ColumnNotFound

Column not found in the result set.

Fields

§name: String
§

ColumnIndexOutOfBounds

Column index out of bounds.

Fields

§index: usize
§count: usize
§

Timeout

Operation timed out.

§

Pool(PoolErrorVariant)

Connection pool error.

§

InvalidState(String)

Invalid connection state for the requested operation.

§

Unsupported(String)

The operation is not supported.

§

Cancelled

Operation was cancelled.

§

Io(Error)

I/O error.

§

Tls(Error)

TLS error.

§

Other(String)

Any other error not covered by the above variants.

Implementations§

Source§

impl PgError

Source

pub fn is_connection_broken(&self) -> bool

Check if the error indicates the connection is broken and cannot be recovered without reconnecting.

Source

pub fn is_retryable(&self) -> bool

Check if this error is potentially retryable without reconnecting.

Source

pub fn code(&self) -> Option<&str>

Returns the SQLSTATE error code if this is a server error.

Source

pub fn context(self, msg: impl Into<String>) -> Self

Add context to an error by wrapping it in a descriptive message.

Trait Implementations§

Source§

impl Debug for PgError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for PgError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for PgError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for PgError

Source§

fn from(e: TypeConversionError) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for PgError

Source§

fn from(e: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for PgError

Available on crate feature tls only.
Source§

fn from(e: Error) -> Self

Converts to this type from the input type.
Source§

impl From<PgServerError> for PgError

Source§

fn from(e: PgServerError) -> Self

Converts to this type from the input type.
Source§

impl From<ProtocolError> for PgError

Source§

fn from(e: ProtocolError) -> Self

Converts to this type from the input type.
Source§

impl From<TransportError> for PgError

Source§

fn from(e: TransportError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more