Mijn geld staat op een verkeerd gespelde naam. Ik zie in de foutmelding dat je
OmniCloud_App_accounts
OmniCloud_App_user
Tweede tafel gebruikt enkelvoud. Er is niet toevallig een tweede tafel zoals deze:
OmniCloud_App_users
Ook het gebruik van mixed case-ID's in PostgreSQL is een geweldige bron van reputatie hier op SO. Het zal je vroeg of laat bijten. Slachtoffers van die dwaasheid zijn hier stamgasten. Elke tabel met deze naam misschien - en je bent de dubbele aanhalingstekens vergeten in "OmniCloud_App_user"
ergens?
omnicloud_app_user
Het is dat of de transactie die de gebruiker opslaat, is nog niet vastgelegd. Kun je alleen de gebruiker (en nog geen accounts) aanmaken en controleren of deze in de juiste database in de tabel en met het juiste ID terechtkomt?
Bewerken:hulpmiddelen om het probleem te diagnosticeren
Als je weet dat gebruikers worden gemaakt, dan is de vraag:doet de externe sleutelbeperking user_id_refs_id_468fbcec324e93d2
op de goede plek kijken? Zelfde databank? Zelfde schema? Zelfde tafel?
Om erachter te komen welke tabellen in uw database aanwezig zijn, kunt u de volgende zoekopdracht proberen (als u over de benodigde rechten beschikt):
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';
Toont alle tabellen in alle schema's die "gebruiker" in de naam hebben, niet hoofdlettergevoelig. Plus als de tafel triggers heeft (zou uw probleem veroorzaken) en hoeveel rijen erin staan (schatting bijgewerkt door ANALYZE
). Kan je een aanwijzing geven ...
U kunt ook het meta-commando \d
. gebruiken van de standaard opdrachtregelclient (interactieve terminal) psql
.
Ik zou een testcase uitvoeren en de postgres-server alles laten loggen wat het krijgt. Stel hiervoor deze parameter in:
set log_statement = 'all';
De handleiding over logging-parameters .
De handleiding over hoe parameters in te stellen .