sql >> Databasteknik >  >> RDS >> PostgreSQL

Fel:Nyckel ... finns inte i tabellen

Min första gissning skulle vara att du har att göra med två olika tabeller heter bg . En i schemat tiger , och ytterligare ett i ett hemligt schema som kommer före tiger i din search_path - eller tiger finns inte i search_path överhuvudtaget.

Hitta alla tabeller som heter bg (skiftlägeskänslig) i alla scheman i den aktuella db:

SELECT * FROM pg_tables WHERE tablename = 'bg';

För att förstå search_path inställning:

För att förstå strukturen för ett Postgres DB-kluster:

Om det inte är det kan ditt index vara skadat. Jag skulle först prova en REINDEX :

REINDEX bg_pkey;

Arv!

Jag ser i din tillagda tabelldefinition:

Misstänker att raden med bg_id ='470370111002' faktiskt bor i barntabellen tiger_data.tn_bg . Men din FK-begränsning refererar till överordnad tabellen . FK-begränsningar ärvs inte.
Vad får du om du frågar:

SELECT * FROM ONLY bg WHERE bg_id ='470370111002'

Om min hypotes håller, får du ingen rad . Läs kapitlet Varningar stark> på sidan Arv i handboken .

Relaterat:




  1. Rails och PostgreSQL:Roll postgres existerar inte

  2. PostgresQL SQL:Konvertera resultat till array

  3. Försöker undvika en cirkulär referens

  4. Hur man kontrollerar om en tabell finns i SQLite