I miei soldi sono su un nome sbagliato. Noto nel messaggio di errore che hai
OmniCloud_App_accounts
OmniCloud_App_user
La seconda tabella usa il singolare. Non c'è un secondo tavolo come questo per caso:
OmniCloud_App_users
Inoltre, l'utilizzo di identificatori di casi misti in PostgreSQL è un'ottima fonte di reputazione qui su SO. Ti morderà prima o poi. Le vittime di quella follia sono clienti abituali qui. Qualsiasi tabella con questo nome forse - e hai dimenticato le virgolette in "OmniCloud_App_user"
da qualche parte?
omnicloud_app_user
O è quello o la transazione che salva l'utente non è stata ancora impegnata. Puoi solo creare l'utente (e nessun account ancora) e controllare se finisce nel database giusto nella tabella e con l'ID giusto?
Modifica:strumenti per diagnosticare il problema
Se sai che gli utenti vengono creati, quindi la domanda è:il vincolo della chiave esterna user_id_refs_id_468fbcec324e93d2
guarda nel posto giusto? Stesso database? Stesso schema? Stesso tavolo?
Per scoprire quali tabelle esistono nel tuo database, prova la seguente query (se hai i privilegi necessari):
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';
Mostra tutte le tabelle in tutti gli schemi che hanno "utente" nel nome, senza distinzione tra maiuscole e minuscole. Inoltre se la tabella ha attivatori (potrebbe causa il tuo problema) e quante righe contiene (stima aggiornata da ANALYZE
). Potrebbe darti una guida...
Puoi anche usare il metacomando \d
del client a riga di comando standard (terminale interattivo) psql
.
Vorrei eseguire un test case e fare in modo che il server postgres registri tutto ciò che ottiene. Impostare questo parametro a tale scopo:
set log_statement = 'all';
Il manuale sui logging-parameters .
Il manuale su come impostare i parametri .