logical replication target relation “…” uses system columns in REPL…

SQLSTATE 55000 condition object_not_in_prerequisite_state class 55 — Object Not In Prerequisite State severity ERROR
Reproduced & verified on PostgreSQL 14.23, 15.18, 16.14, 17.10 and 18.4 — identical message on every version.
Last reviewed 30 May 2026 · Reproduced live with the SQL on this page.

Symptoms

A statement failed with SQLSTATE 55000 (object_not_in_prerequisite_state), reported at severity ERROR. This is a Object Not In Prerequisite State condition: PostgreSQL emits the message logical replication target relation "…" uses system columns in REPLICA IDENTITY index.

What the server log shows

ERROR:  logical replication target relation "…" uses system columns in REPLICA IDENTITY index

Why PostgreSQL raises this

Class 55 (Object Not In Prerequisite State) is raised when an object exists but is not in a state that allows the requested operation right now.

As described in PostgreSQL’s Appendix A PostgreSQL Error Codes, SQLSTATE 55000 carries the condition name object_not_in_prerequisite_state in class Object Not In Prerequisite State. (Paraphrased — see the linked reference for the exact wording.)

Common causes

How to fix it

  1. Wait for the conflicting session/operation to finish, then retry.
  2. Establish the missing precondition before retrying.
  3. Check for blocking locks with pg_locks.

Version applicability

This message is present in PostgreSQL 15, 16, 17, 18 and 19.

Related & next steps

Reference: PostgreSQL Appendix A PostgreSQL Error Codes.