Moje pieniądze są na błędnie napisanym nazwisku. Zauważyłem w komunikacie o błędzie, że masz
OmniCloud_App_accounts
OmniCloud_App_user
Druga tabela używa liczby pojedynczej. Nie ma przypadkiem drugiego takiego stołu:
OmniCloud_App_users
Ponadto używanie identyfikatorów z mieszanymi literami w PostgreSQL jest świetnym źródłem reputacji tutaj w SO. Ugryzie cię prędzej czy później. Ofiary tego szaleństwa są tu stałymi bywalcami. Może dowolna tabela o tej nazwie - i zapomniałeś podwójnych cudzysłowów w "OmniCloud_App_user"
gdzieś?
omnicloud_app_user
To albo to, albo transakcja zapisująca użytkownika nie została jeszcze zatwierdzona. Czy możesz tylko utworzyć użytkownika (i jeszcze żadnych kont) i sprawdzić, czy trafi on do właściwej bazy danych w tabeli i z właściwym identyfikatorem?
Edycja:narzędzia do diagnozowania problemu
Jeśli wiesz że użytkownicy są tworzeni, to pytanie brzmi:czy obcy klucz ograniczenie user_id_refs_id_468fbcec324e93d2
spojrzeć we właściwe miejsce? Ta sama baza danych? Ten sam schemat? Ta sama tabela?
Aby dowiedzieć się, które tabele istnieją w Twojej bazie danych, wypróbuj następujące zapytanie (jeśli masz niezbędne uprawnienia):
SELECT n.nspname AS schema_name
,c.relname AS table_name
,c.relhastriggers
,c.reltuples
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~~* '%user%'
AND c.relkind = 'r'
AND nspname <> 'pg_catalog';
Pokazuje wszystkie tabele we wszystkich schematach, które mają słowo „user” w nazwie, bez uwzględniania wielkości liter. Plus, jeśli tabela ma wyzwalacze (może powoduje twój problem) i ile jest w nim wierszy (oszacowanie zaktualizowane przez ANALYZE
). Może dać ci trop...
Możesz także użyć metapolecenia \d
standardowego klienta wiersza poleceń (interaktywny terminal) psql
.
Uruchomiłbym przypadek testowy i kazałby serwerowi postgres rejestrować wszystko, co dostaje. W tym celu ustaw ten parametr:
set log_statement = 'all';
Podręcznik o parametrach rejestrowania .
Podręcznik jak ustawić parametry .