SQLSTATE 3D000 ERROR Class 3D: Invalid Catalog Name

invalid_catalog_name Invalid Catalog Name — SQLSTATE 3D000

The target database does not exist.

PG 12, 13, 14, 15, 16, 17, 18 Official docs
Last reviewed May 2025 Grounded in source

Symptoms

The target database does not exist.

  • The error is written to the server log and returned to the client carrying SQLSTATE 3D000.
  • Any driver (libpq, JDBC, psycopg, npgsql, pgx) surfaces this code in its error object so you can branch on it programmatically.
  • PL/pgSQL can trap it by name: EXCEPTION WHEN invalid_catalog_name THEN.

Environment

Severity: ERROR  |  PostgreSQL versions: 12, 13, 14, 15, 16, 17

Reproduce with the exact statement and read the full message in the server log (raise log_min_messages / set log_min_error_statement for more context).

Root Cause

The connection or command named a database that is not present on the server.

Diagnostic Queries

Recovery

Steps to resolve 3D000:

  1. Verify the name and create it if needed: CREATE DATABASE name;.
  2. List databases: \l in psql, or SELECT datname FROM pg_database;.

Reference: PostgreSQL error codes — Class 3D (Invalid Catalog Name).

Was this helpful?