Mina pengar är på ett felstavat namn. Jag märker i felmeddelandet att du har
OmniCloud_App_accounts
OmniCloud_App_user
Andra tabellen använder singular. Det finns inte ett andra bord som detta av en slump:
OmniCloud_App_users
Att använda blandade case-identifierare i PostgreSQL är också en stor källa till rykte här på SO. Det kommer att bita dig förr eller senare. Offren för den dårskapen är stammisar här. Vilken tabell som helst med detta namn kanske - och du glömde de dubbla citattecken i "OmniCloud_App_user"
någonstans?
omnicloud_app_user
Det är antingen det eller transaktionen som sparar användaren har inte begåtts ännu. Kan man bara skapa användaren (och inga konton än) och kontrollera om den hamnar i rätt databas i tabellen och med rätt ID?
Redigera:verktyg för att diagnostisera problemet
Om du vet att användare skapas, då är frågan:är den främmande nyckelbegränsningen user_id_refs_id_468fbcec324e93d2
titta på rätt ställe? Samma databas? Samma schema? Samma bord?
För att ta reda på vilka tabeller som finns i din databas, försök med följande fråga (om du har de nödvändiga rättigheterna):
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';
Visar alla tabeller i alla scheman som har "användare" i namnet, skiftlägesokänslig. Plus om tabellen har triggers (kan orsaka ditt problem) och hur många rader det finns (uppskattning uppdaterad av ANALYSE
). Kan ge dig en ledning ...
Du kan också använda metakommandot \d
för den vanliga kommandoradsklienten (interaktiv terminal) psql
.
Jag skulle köra ett testfall och låta postgres-servern logga allt den får. Ställ in denna parameter för ändamålet:
set log_statement = 'all';
Manualen om loggningsparametrar .
Handboken om hur man ställer in parametrar .