PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Błąd:Klucz ... nie występuje w tabeli

Domyślam się, że masz do czynienia z dwoma różne stoły o nazwie bg . Jeden w schemacie tiger , a drugi w nieujawnionym schemacie, który występuje przed tiger w Twojej search_path - lub tygrys nie znajduje się w search_path w ogóle.

Znajdź wszystkie tabele o nazwie bg (wielkość liter ma znaczenie) we wszystkich schematach w bieżącej bazie danych:

SELECT * FROM pg_tables WHERE tablename = 'bg';

Aby zrozumieć search_path ustawienie:

Aby zrozumieć strukturę klastra Postgres DB:

Jeśli tak nie jest, Twój indeks może być uszkodzony. Najpierw spróbowałbym REINDEX :

REINDEX bg_pkey;

Dziedziczenie!

Widzę w dodanej definicji tabeli:

Podejrzewam, że wiersz z bg_id ='470370111002' faktycznie mieszka w stoliku podrzędnym tiger_data.tn_bg . Ale Twoje ograniczenie FK odwołuje się do tabeli nadrzędnej . Ograniczenia FK nie są dziedziczone.
Co otrzymasz, jeśli wyślesz zapytanie:

SELECT * FROM ONLY bg WHERE bg_id ='470370111002'

Jeśli moja hipoteza jest słuszna, brak wiersza . Przeczytaj rozdział Zastrzeżenia na stronie Dziedziczenie podręcznika .

Powiązane:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - INNER JOIN dwie tabele z LIMIT

  2. Pandy zapisują ramkę danych do innego schematu postgresql

  3. Usunięcie CTE nie zostało zatwierdzone do czasu zakończenia następujących oświadczeń

  4. Jak odwoływać się i zapisywać kilka identyfikatorów User_ID w jednym formularzu i wyświetlaniu id w indeksie / Pokaż strony aplikacji Rails 4

  5. Połączenie Npgsql z certyfikatami ssl w .net core web api