42622
PostgreSQLERRORNotableSyntax Error or Access Rule ViolationHIGH confidence

name too long

What this means

SQLSTATE 42622 is raised when an identifier (table name, column name, constraint name, etc.) exceeds the maximum length allowed by Postgres. By default, the maximum identifier length is 63 bytes (NAMEDATALEN - 1).

Why it happens
  1. 1An identifier exceeds 63 bytes (the default NAMEDATALEN limit)
  2. 2Auto-generated constraint names (e.g., from long table and column name combinations) exceed 63 bytes
How to reproduce

Creating a column with a name exceeding 63 bytes.

trigger — this will error
trigger — this will error
CREATE TABLE t (
  this_column_name_is_way_too_long_to_fit_in_the_postgres_name_limit_of_63_bytes TEXT
);

expected output

ERROR:  identifier "this_column_name_is_way_too_long_to_fit_in_the_postgres_name_limit_of_63_bytes" will be truncated to "this_column_name_is_way_too_long_to_fit_in_the_postgres_na"

Fix 1

Shorten the identifier to 63 bytes or fewer

WHEN When creating long-named objects.

Shorten the identifier to 63 bytes or fewer
CREATE TABLE t (
  long_description_column TEXT -- shortened
);

Why this works

Postgres silently truncates identifiers that are too long (with a warning). To avoid the truncation and potential name collisions, use explicitly shorter names.

Fix 2

Explicitly name auto-generated constraints with short names

WHEN When auto-generated constraint names may be too long.

Explicitly name auto-generated constraints with short names
ALTER TABLE orders ADD CONSTRAINT fk_orders_cust
  FOREIGN KEY (customer_id) REFERENCES customers(id);

Why this works

Providing an explicit short constraint name prevents auto-generated names from being truncated in ways that may clash.

Version notes
All versions

NAMEDATALEN is a compile-time constant defaulting to 64 (max identifier = 63 bytes). Rebuilding Postgres from source with a higher NAMEDATALEN is possible but non-standard.

Sources
Official documentation ↗

Class 42 — Syntax Error or Access Rule Violation

Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev

← All PostgreSQL errors