PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fehler:Schlüssel ... ist in der Tabelle nicht vorhanden

Meine erste Vermutung wäre, dass Sie es mit zwei zu tun haben verschiedene Tische mit dem Namen bg . Einer im Schema tiger , und ein weiteres in einem nicht offengelegten Schema, das vor tiger kommt in Ihrem search_path - oder Tiger ist nicht im search_path überhaupt.

Finden Sie alle Tabellen mit dem Namen bg (Groß-/Kleinschreibung beachten) in allen Schemas in der aktuellen Datenbank:

SELECT * FROM pg_tables WHERE tablename = 'bg';

Um den search_path zu verstehen Einstellung:

So verstehen Sie die Struktur eines Postgres-DB-Clusters:

Wenn das nicht der Fall ist, ist Ihr Index möglicherweise beschädigt. Ich würde zuerst einen REINDEX ausprobieren :

REINDEX bg_pkey;

Vererbung!

Ich sehe in Ihrer hinzugefügten Tabellendefinition:

Vermutung, dass die Zeile mit bg_id ='470370111002' lebt tatsächlich in der untergeordneten Tabelle tiger_data.tn_bg . Ihre FK-Einschränkung verweist jedoch auf die Elterntabelle . FK-Einschränkungen werden nicht vererbt.
Was erhalten Sie, wenn Sie Folgendes abfragen:

SELECT * FROM ONLY bg WHERE bg_id ='470370111002'

Wenn meine Hypothese zutrifft, erhalten Sie keine Zeile . Lesen Sie das Kapitel Warnhinweise auf der Vererbungsseite des Handbuchs .

Verwandte: