ERROR: relation "x" already exists

CREATE TABLE/INDEX/SEQUENCE used a name that already exists in that schema.

Seen on: PostgreSQL

Meaning

Migrations run twice, migration history out of sync with the real schema, or index names colliding (index names are unique per schema, not per table).

Common causes

  • Migration re-run or history table out of sync
  • Same index name used on two tables
  • Restoring into a non-empty database

⚡ Quick fix

  1. Use IF NOT EXISTS
  2. Give indexes table-specific names
  3. Sync migration state (e.g. mark as applied) carefully

Detailed fix by platform

PostgreSQL

  1. CREATE INDEX IF NOT EXISTS orders_user_id_idx ON orders (user_id);

How to diagnose

  1. Object — Table, index or sequence?
  2. Migrations — History matches schema?

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.