sql >> Databáze >  >> RDS >> PostgreSQL

Error:Key ... není přítomen v tabulce

Můj první odhad by byl, že máte co do činění s dvoma různé stoly s názvem bg . Jeden ve schématu tiger a další v nezveřejněném schématu, které předchází tiger ve vaší search_path - nebo tygr není v search_path vůbec.

Najděte všechny tabulky s názvem bg (rozlišují se malá a velká písmena) ve všech schématech v aktuální databázi:

SELECT * FROM pg_tables WHERE tablename = 'bg';

Pro pochopení search_path nastavení:

Chcete-li porozumět struktuře clusteru Postgres DB:

Pokud tomu tak není, váš index může být poškozen. Nejprve bych zkusil REINDEX :

REINDEX bg_pkey;

Dědičnost!

Ve vaší přidané definici tabulky vidím:

Podezření, že řádek s bg_id ='470370111002' ve skutečnosti žije v dětském stole tiger_data.tn_bg . Ale vaše omezení FK odkazuje na nadřazenou tabulku . Omezení FK se nedědí.
Co získáte, když se zeptáte:

SELECT * FROM ONLY bg WHERE bg_id ='470370111002'

Pokud moje hypotéza platí, nedostanete žádný řádek . Přečtěte si kapitolu Upozornění na stránce Dědičnost v příručce .

Související:




  1. Odstranit duplikáty z velké datové sady (> 100 milionů řádků)

  2. Problém s přístupem ke vzdálené Postgres DB na Heroku z Local Node.js Webapp

  3. Obskurní dokumentace mysqldb Pythonu

  4. Získejte první datum v měsíci v postgresu